c - C 编程中读取文本文件

标签 c

我正在尝试编写一个 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/

相关文章:

c - struct tm 的替代方案

C - 如何逐行读取 HTTP GET 请求的返回值?

c - 从reg-green-blue图像到c中的灰度图像

c - c中的嵌套链表

计算斜边的 C 程序

c - 如何在 C 中进行按位异或

c - busybox 中的 L_* 宏是什么?

c - 无论有没有 C 头文件中的包含保护,它仍然有效。那是为了什么?

c - C语言中的优先级队列

c - 为什么我可以更改 const char *ptr 的内容?