如何停止从C中的文件读取

我只是想读取文件的每个字符并将其打印出来,但是当文件完成阅读时,但我得到了一堆?完成阅读后.我如何解决它?
#include <stdio.h>

int main(void){
    FILE *fr;            /* declare the file pointer */

    fr = fopen ("some.txt","r");  /* open the file for reading */
        /* elapsed.dta is the name of the file */
        /* "rt" means open the file for reading text */
    char c;
    while((c = getc(fr)) != NULL)
    {
        printf("%c",c);
    }
    fclose(fr);  /* close the file prior to exiting the routine */
    /*of main*/ 


    return 0;
}

解决方法

尽管它的名称,getc返回一个int,而不是一个char,因此它可以表示所有可能的char值,此外还有EOF(文件末尾).如果getc返回了一个char,那么在没有使用文件中可能存在的值之一的情况下,将无法指示文件的结尾.

因此,要修复代码,必须先更改声明char c;到int c;这样它可以在返回时保持EOF标记.然后,您还必须更改while循环条件以检查EOF而不是NULL.

你也可以调用feof(fr)来单独测试文件结尾来读取字符.如果你这样做了,你可以把c留作char,但是你必须在读完字符之后但是在打印出来之前调用feof(),并使用break来摆脱循环.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...