c - 为什么 fscanf 使用 2 次 : while( ! feof(File))

标签 c scanf feof

为什么在使用fscanf从文件中获取数据时,使用了2次,一次在"!feof(fin)"之前,一次在后面,如下代码所示:

fscanf(fin, "%s", letta);
while(!feof(fin)){

    fscanf(fin, "%s", letta);
}

读的字不一样?

最佳答案

不,读取的单词不会相同,因为您从文件中读取了两次,每次都会得到不同的数据。

while 中的条件测试您是否在文件末尾,为了做到这一点,必须进行读取尝试,这需要 fscanf() 循环之前。

进入循环后,您希望继续读取文件。据推测,循环内会有更多代码来处理您正在阅读的数据。

在您发布的代码中,如果您在第一次尝试读取时遇到文件末尾,则不会进入 (while) 循环。

将此与 do-while 构造进行对比,其中测试位于循环的底部(即读取仅在循环的“底部”发生一次)。在那里,您将始终至少进入循环一次。

关于c - 为什么 fscanf 使用 2 次 : while( ! feof(File)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119942/

相关文章:

c - 在C中获取冒号后的数字

c - 使用 fscanf() 从文件中读取文本

c - 如何在结果中找到最大数量

c - mlockall 的这种用法正确吗?

c - 使用 SSE (x*x*x) 的乘法

c - 在结构中,scanf 返回 var 地址而不是值

C 中的字符 IO

c++ - 在c中使用scanf停止无限while循环?

c - feof() 和 fscanf() 在将字节 1b 作为字符扫描后停止工作。是因为ascii是 'ESC'吗?我能做些什么?

c - 为什么 feof() 中会出现段错误?