C fscanf问题

时间:2010-09-30 23:43:31

标签: c scanf

如果我打开一个文件并使用fscanf来读取这样的文件:

2 41
1 50
1 46
   ....

如何告诉C读取第一个数字并将其存储为变量,然后将第二个数字存储为另一个变量,运行循环,然后转到下一个数组?

2 个答案:

答案 0 :(得分:0)

有关fscanf的一些提示:

  1. 始终检查返回值。如果您要求一个整数,如果成功扫描,则应返回1。其他返回值包括0EOF,这可能表示读取失败,或未能找到与提供的模式匹配的数据。

  2. 除非格式规范包含[cn说明符,否则通常会忽略空白字符。

  3. 始终检查返回值。


  4. 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;
        }
    }
    

答案 1 :(得分:0)

这样的循环就是你所追求的:

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");
}