fscanf返回值

slo*_*low 9 c scanf

fscanf在读取文件中的数据时返回什么.例如,

int number1, number2, number3, number4, c;

c = fscanf (spFile, "%d", &number1);
//c will be 1 in this case.

c = fscanf (spFile, "%d %d %d %d", &number1, &number1, &number3, &number4);
//in this case, c will return 4.
Run Code Online (Sandbox Code Playgroud)

我只想知道为什么它会根据参数的数量返回这些值.

Cha*_*via 11

Xscanf系列函数的联机帮助页:

成功完成后,这些功能将返回成功匹配和分配的输入项目的数量 ; 如果早期匹配失败,此数字可以为零.如果输入在第一次匹配失败或转换之前结束,则返回EOF.如果发生读错误,则设置流的错误指示符,返回EOF,并设置errno以指示错误

因此,您首次调用fscanf返回1,因为一个输入项(&number1)已成功与格式说明符匹配%d.第二次调用fscanf返回4,因为所有4个参数都匹配.