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

eks*_*nte 2 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");
    }
Run Code Online (Sandbox Code Playgroud)

我无法读取整数.文件没问题,它包含4个整数.怎么了?

Tim*_*per 5

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

if(fscanf(fin, "%d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3]) == 4) 
Run Code Online (Sandbox Code Playgroud)

手册页:

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