为什么在使用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/