在c中使用fscanf读取整数失败

时间:2012-10-27 12:03:16

标签: c scanf

FILE *fin = fopen("figura.in", "r");
if(fscanf(fin, "%d %d %d %d", &int[0], &int[1], &int[2], &int[3]) == 1)     {
        printf("%d\t%d\t%d\t%d\n", int[0], int[1], int[2], int[3]);
    } else {
        printf("failed to read integer.\n");
    }

我无法读取整数。文件没问题,它包含4个整数。有什么问题?

1 个答案:

答案 0 :(得分:5)

您应该检查fscanf是否返回4,格式字符串中的输入数量:

if(fscanf(fin, "%d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3]) == 4) 

来自man page

  

返回成功匹配和分配的输入项的数量,可以少于提供的数量,或者在早期匹配失败的情况下甚至为零。