C Программирование ScanF множественного ввода одним файлом - PullRequest
2 голосов
/ 02 февраля 2012

Попытка выяснить, как читать несколько переменных через файл.например, я знаю, как читать в одном, если у меня есть файл с именем «datainput», в котором есть строка текста «150», а затем в моей программе, если у меня есть значение int;и затем scanf ("% d", & value);когда я запускаю программу с файлом, она читает файл и затем применяет его к моей переменной.но то, что я сейчас пытаюсь сделать, это нечто подобное, но вместо этого я читаю в 2 значениях, так что, скажем, в моем текстовом файле у меня будет что-то вроде «3.1, 3.4», а затем я помещу его в переменные 1 и 2 как-то так.У кого-нибудь есть идеи?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Чтобы прочитать два значения, все, что вам нужно сделать, это добавить дополнительный спецификатор формата к вызову scanf():

scanf("%d %d", &value1, &value2); //reads two values

Кроме того, просто чтобы заметить, что при чтении из файла вам необходимо использовать функцию fscanf имеет формат, аналогичный scanf, за исключением того, что вам нужно передать указатель на файл, с которым вы работаете:

  char inFileName[] = "input.txt";

  FILE *inFile;

  /* open the input file */  
  inFile = fopen(inFileName, "r");

  fscanf(inFile, "%d %d", &value1, &value2); //reads two values from FILE inFile
1 голос
/ 02 февраля 2012

Если ваш формат:

3.1, 3.4

Попробуйте:

float float1, float2;
int num_things_read = scanf("%f, %f",&float1,&float2);

Справочная страница scanf() содержит полный список всех форматов, которые вы можете использовать. Строка формата может использоваться для указания формата ввода, аналогично printf(), может использоваться для указания формата вывода (хотя не совсем так).

Здесь также есть небольшая серия примеров здесь .

Как указывает комментатор, если вы читаете из файла, вам нужно использовать fscanf():

int num_things_read = fscanf(stream, "%f, %f",&float1, &float2);

Где stream - это то, что вы ранее открывали с помощью fopen(), например, файл.

...