我正在尝试编写一个 C 程序,该程序能够从文本文件中读取数据(字符串)并以字节为单位交换每个内容。我已经实现了代码,一切工作正常,并且我能够读取指定文本文件的所有内容,但问题是程序打印文本文件中的最后一个单词两次,我不知道为什么?任何帮助都会有帮助!这是我的代码:
while( !feof(ptr_file))
{
//to read in group of words (sentences) if
//needed !.
fscanf(ptr_file, "%s", userName);
//time to swap letters of the word coming from the text file.
swap_a_word(userName, 0, 4);
swap_a_word(userName, 1, 2);
//new space.
printf("\n");
//display the word after swapping to the screen for the user.
printf("%s", userName);
}
程序不得打印额外的数据。我不知道,但是当程序到达文件末尾时,它会打印文本文件的最后一个数据两次。请任何提示都会有帮助!
谢谢!
最佳答案
问题出在 while
循环条件
while(!feof(ptr_file))
请注意,EOF
前面有一个换行符 '\n'
。当到达文件末尾时,fscanf
返回值EOF
。但是,这不会在流上设置文件结束指示符,因此会额外进入一次循环。您应该检查 fscanf
的返回值,而不是查找成功匹配和分配的项目数。
关于c - C 编程中读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535846/