C fscanf проблема - PullRequest
       1

C fscanf проблема

0 голосов
/ 01 октября 2010

Если я открою файл и использую fscanf, чтобы прочитать файл следующим образом:

2 41
1 50
1 46
....

Как мне сказать C прочитать первое число и сохранить его как переменную, затем второе как другую переменную, запустить цикл и перейти к следующему набору?

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

Цикл, подобный следующему:

int type, stories;

while (fscanf(buildingFile, "%d %d", &type, &stories) == 2)
{
    printf("Got type=%d, stories=%d\n", type, stories);
    /* Do something with 'type' and 'stories' */
}

if (ferror(buildingFile))
{
    perror("buildingFile");
}
0 голосов
/ 01 октября 2010

Некоторые указатели о fscanf:

  1. Всегда проверяйте возвращаемое значение.Если вы запросили одно целое число, оно должно вернуть 1, если оно успешно отсканировано.Другие возвращаемые значения включают 0 или EOF, что может указывать на сбой чтения или нахождение данных, соответствующих предоставленному шаблону.

  2. Пробельные символы обычно игнорируются, если толькоспецификация формата включает спецификатор [, c или n.

  3. Всегда проверяйте возвращаемое значение.


while(1)
{
    int result;
    int firstNumber;
    int secondNumber;

    result = fscanf (file, "%d%d", &firstNumber, &secondNumber);
    if (result == 2)
    {
        printf("Scanned two numbers, %d and %d\n", firstNumber, secondNumber);
    }
    else
    {
        if (result != EOF)
            puts("An error occurred");
        break;
    }
}
...