c语言feof() 好奇怪

第一幅图:用fgetc()再用feof(),最后一次fgetc()会返回EOF给char c 虽然没法打印显示出来,但在调试窗口可以看到-1。 所以除了回车符号一个读操作了11次。第二幅图(??):一共只读操作 了10次,调试时读取完最后一个数字9,下一句feof()就为真了,就结束了,咋就和第一幅图不一样,不多读一次了。
第一幅图:图片说明
第二幅图:图片说明

第二图改为fscanf(fp,"%c",&a);应该就一样了。可以去了解下格式化IO用法。

每一次都去操作都要判断feof, 因为你每一次读取都可能触发结尾标准,如果你理解这个就明白原因了

一旦有一次触碰到文件末尾,而你未做feof判断,你就可能使用上一次读取的值继续执行后续的代码了