精华内容
下载资源
问答
  • 判断文件结束函数feof 例C语言-概念-调用getc(fgetc)和putc(fputc)函数进行输入和输出中,程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在while循环中以EOF作为文件结束的标志。这种以EOF作为文件结束...

    判断文件结束函数feof

    C语言-概念-调用getc(fgetc)和putc(fputc)函数进行输入和输出中,程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在while循环中以EOF作为文件结束的标志。这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束的标志。
    当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件结束的标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。如果遇到文件结束,函数feof(fp)的值为1,否则为0。feof函数既可用以判断二进制文件是否结束,也可用以判断文本文件是否结束。
    编写程序,用于把一个文本文件(源文件)复制到另一个文件(目标文件)中。源文件名为file_a.dat,目标文件名为file_b.dat。程序如下:

    #include<stdio.h>
    void filecopy(FILE *,FILE *);
    main()
    {
    	FILE *fpin,*fpout;
    	fpin=fopen("file_a.dat","r");//打开输入文件
    	fpout=fopen("file_b.dat","w");//打开输出文件
    	filecopy(fpin,fpout);//把fpin所指文件中的内容输出到fpout所指文件中
    	fclose(fpin);//关闭输入文件
    	fclose(fpout);//关闭输出文件
    }
    void filecopy(FILE *fpin,FILE *fpout)
    {
    	char ch;
    	ch=getc(fpin);//先读一次文件再去判断文件是否结束
    	while(!feof(fpin))//当未到文件末尾时进行循环
    	{//逐个字符进行复制
    		putc(ch,fpout);
    		ch=getc(fpin);
    	}
    }
    
    展开全文
  • 判断文件结束函数(feof)

    千次阅读 2013-05-25 16:26:22
    如果是文件结束函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数判断二进制文件和文本文件的结束 例: 将一个文本文件数据复制到另一个文件中(前提是a.txt是已存在的文件) #...

    函数feof(fp//文件指针)用于测试fp所指向的文件内部位置指针是否指向文件结束。如果是文件结束,函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数可判断二进制文件和文本文件的结束

    例:

    将一个文本文件数据复制到另一个文件中(前提是a.txt是已存在的文件)

    #include <stdio.h>
    int main()
    {
        FILE *fpin,*fpout;
        char ch;
        if((fpin = fopen("d:\\a.txt","rt")) == NULL)//打开源文件
        {
            printf("Cannot open a.txt\n");
        }
        if((fpout = fopen("d:\\b.txt","wt")) == NULL)//打开目标文件
        {
            printf("cannot open b.txt\n");
        }
        ch = fgetc(fpin); //读取原文件第一个字符
        printf("直接输出文件a的内容\n");
        while(!feof(fpin)) //判断源文件是否结束
        {
            putchar(ch);
            fputc(ch,fpout);
            ch = fgetc(fpin);
        }
        printf("\n");
        fclose(fpin);
        fclose(fpout);
        printf("\n将a文件复制到b文件中后,输出b文件的内容\n");
        if((fpout = fopen("d:\\b.txt","rt")) == NULL)
        {
            printf("Cannot open b.txt\n");
        }
        ch = fgetc(fpout);
        while(!feof(fpout))
        {
            putchar(ch);
            ch = fgetc(fpout);
        }
        fclose(fpout);
        printf("\n");
        return 0;
    }
    

    展开全文
  • 课本上时这样写的:(用putchar(ch);代表对取出来的字符的处理。...但是,这样写的话,fgetc()函数总是会多读入一个字符。 应该改为如下形式: 1 ch=fgetc(fp); 2 while(!feof(fp)) 3 { ...

    课本上时这样写的:(用putchar(ch);代表对取出来的字符的处理。)

    1 while(!feof(fp))
    2 {
    3     ch=fgetc(fp);
    4     putchar(ch);
    5 }

    但是,这样写的话,fgetc()函数总是会多读入一个字符。

    应该改为如下形式:

    1 ch=fgetc(fp);
    2 while(!feof(fp))
    3 {
    4     putchar(ch);
    5     ch=fgetc(fp);
    6 }

    只有当从文件输入“文件结束符”后,才能使用feof(fp)函数判断文件是否结束。

    课本上的代码是这样运行的:使用ch=fgetc(fp);从文件读入了文件结束符,然后输出文件结束符(-1)对应的字符(其实是乱码,没有ASCII为-1的字符),然后再根据!feof(fp)为假,判断文件结束,其实文件在前一次循环中已经结束了。

    代码还可以这样写:

    1 ch=fgetc(fp);
    2 while(ch!=EOF)
    3 {
    4     putchar(ch);
    5     ch=fgetc(fp);
    6 }

    处理文本文件,在判断文件是否结束时,两种方法:ch!=EOF;或者!feof(fp);除了这两个表达式之外的其它代码不要变动。

    处理二进制文件,只能使用!feof(fp)判断文件是否结束。

    转载于:https://www.cnblogs.com/Camilo/p/3379538.html

    展开全文
  • 判断文件结束的几种方法和eof()函数

    万次阅读 2016-04-29 13:07:16
    ,需要注意到是先读文件结束符,eofbit才能置为false,eof()函数才会返回true。所以,在使用时,为了避免错误的情况,可以这样使用: while   ( true )  {  ifs>>x;  if (ifs.eof())...


    看下面一段代码:

    ofstream ofs("a.txt");
    int n = 1;
    while (--n) {     //不进入循环体
      ofs<<n<<"\t";
    }
    ofs.close();
    int  x=5,z = 0;
    ifstream ifs("a.txt");
     while (!ifs.eof()
    {
    cout<<ifs.eofbit<<endl;     //输出1
            x=ifs.get(); -------------》》输出-1,此时ifs指向文件结束符,所以若直接用get()取出,则会出错,出错的表示形式就是输出为-1,所以这个-1表示的是这是一个表示文件结束符,没有其他的数值含义。
     //    ifs>>x;   ----------------》》 输出为5,这种写法与x=ifs.get()不同,在这种形式下,ifs指向文件结束符,所以ifs并没有实际的值,将ifs文件流取到的值赋给x,因为ifs没有值,所以此时x保持不变
           ++z; 
           cout<<x<<"\t"<<flush; 

    ifs.close(); 

    
    
    
    

    可知此时由于n=1,导致a.txt是空的,但是在从a.txt读时,首先判断ifs是否为EOF,程序这时进入循环,说明不是EOF,并读出此时eofbit为1(true),输出读取的值。然后再从新判断ifs是EOF,退出循环。

    --------------》》在文件流中有一个eofbit值,初始化为true,在调用eof()函数进行EOF判断时,就是根据这个eofbit的值来判断的。所以在文件为空时,调用eof(),判断eofbit,此时为true,所以进入循环;此时读取的-1表示文件结束符。在读到这个文件描述符-1之后,文件流类中的eofbit就会置为false(它会辨别是文件里面的数值-1还是文件结束符的-1),再次进入循环判断eof()就会判断EOF,退出循环。----------》》eofbit的值初始化为true,根据读取到的东西判断是否为false,所以在程序进行到读取文件结束符时,eofbit事先不知道这个是文件结束符,只有在读了这个结束符之后才知道已经到文件末尾,并将eofbit置为false。因此,若要判断eof()函数是否为true(即是否到达文件结束),需要先读文件结束符

    再看下面一段代码:

    ofstream ofs("a.txt");
    int n = 10;
    while (--n) {
      ofs<<n<<"\t";             //写入9 8 7 6 5 4 3  1
    }
    ofs.close();
    int  x=0,z = 0;
    ifstream ifs("a.txt");
     while (!ifs.eof()
    {
            ifs>>x;           
            ++z;               
    cout<<x<<"\t"<<flush;   // 输出9 8 7 6 5 4 3 2 1 1
    }                               
    ifs.close();           

    由以上的分析可知,当读到a.txt中的最后一个数1时,eofbit是true,将1赋值给x,并输出,再次循环,此时还未读文件结束符,因此eofbit是true,进入循环体,ifs>>x表示将文件流取到的值赋给x,此时文件流读取到的是文件结束符,eofbit置为false,此时文件流的值不存在,所以x保持不变,还是上次的1,因此继续输出1。再次循环,此时eofbit是false,所以eof()返回true,跳出循环。于是最终就得到输出时多了一个1的情况。

    因此,平时在判断文件是否结束使用到eof()函数时,需要注意到是先读文件结束符,eofbit才能置为false,eof()函数才会返回true。所以,在使用时,为了避免错误的情况,可以这样使用:

    while (true
    ifs>>x;  
    if(ifs.eof()) break;  //先读,读了之后再检测   
    ++z;              
    cout <<x <<"\t" <<flush; 
    或者使用  ifs.peek() != EOF   或   ifs.get(ch) != NULL 或 (ch=ifs.get()) != EOF 的条件

    如:

    while (ifs.get(ch)!=NULL
           
    ++z;              
    cout <<ch <<"\t" <<flush; 

    展开全文
  • feof判断文件结束

    2018-08-31 20:26:31
    fgets 是读取文件中的一行,当读文件过程中发生错误或者读到文件尾时,返回NULL,所以不能使用fgets==NULL来判断是否到了文件尾,需要...这种判断是否到了文件尾的方式在存在错误的,因为fgets函数是遇到回车‘\r...
  • 多数函数(fgets()、gets()、putc()、ungetc()、fread()等)当调用不成功时都返回EOF,EOF的值为0,它既用于报告文件结束,也用于报告错误情形下的返回。因此,为了区分究竟是错误返回还是文件结束返回,就需要调用...
  • 关于文件结束符EOF EOF 是 End Of File 的缩写。 在C语言中,它是在标准库中定义的一个宏。 人们经常误认为EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数...
  • 关于文件结束符EOF EOF 是 End Of File 的缩写。 在C语言中,它是在标准库中定义的一个宏。 人们经常误认为EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数...
  • 判断文件结束的正确机制应该是这样的: 那些具有读取功能的函数,在读入文件的最后一个字节(Last Byte)之后,如果不再继续读,那么程序无从判断文件是否结束;只有在读入最后一个字节之后再继续试图读取时,管理...
  • 注:内容来自网络本文实例讲述了python中readline判断文件读取结束的方法。分享给大家供大家参考。具体分析如下:大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过...
  • if (feof(fp)) //[color=#FF0000]当循环进入到这行时,指针fp指向的内存上被设置了一个文件结束指示器[/color] { break; } putchar(ch); } if (ferror(fp)) //[color=#FF0000]当循环进入到这行时,...
  • 函数功能:检测流上的文件结束符,即:检测文件是否结束。应用该函数可以判断一个文件是否到了结尾。在读取一个未知长度文件时,这个函数很有用。 返回值:遇到文件结束符返回非0,否则返回0。 例程如下::检测...
  • 判断文件结束,有许多方式,比如读取文本文件和二进制文件就可以使用不同的方式,下面分别进行详细介绍和举例。 使用EOF判断文件是否结束 EOF的值为-1,所以往往使用EOF也可以判断文件是否结束,一般用在非格式化...
  • 但是如果是二进制文件,其中可能会包含FF,因此不能把读到EOF作为文件结束的条件,此时只能用feof()函数。 在VC里,只有当文件位置指针(fp->_ptr)到了文件末尾,然后再发生读/写操作时,标志位(fp->_flag)才...
  • 本文实例讲述了python中readline判断文件读取结束的方法。分享给大家供大家参考。具体分析如下:大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过这个方法,展开...
  • 如题所示 本人做的是一个mp3 播放器 绞尽脑汁 无法实现判断MP3文件播放结束 跳转下一曲的功能 请大神帮忙 明天答辩了
  • 文件结束判断

    2013-05-07 21:25:57
    文件结束判断  feof(fp)的返回值:如果文件结束函数feof(fp)的值为1,否则为0。 EOF是文件结束标志的文件:在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCⅡ代码的范围是0到255,不可能出现-1,因此...
  • 本文实例讲述了python中readline判断文件读取结束的方法。分享给大家供大家参考。具体分析如下: 大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过这个方法,展开...
  • 例子:从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。...1.使用feof()函数 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int mai...
  • 最近做开发的时候用到c语言文件的读写函数fread(),采用while(!feof(fp))来控制循环,结果发现每次读取数据的时候总会把最后一个数据单元读取两次,很是不解。 后来查找资料发现,原来fread()在读到文件最后一个...
  • 本文实例讲述了python中readline判断文件读取结束的方法。分享给大家供大家参考。具体分析如下:大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过这个方法,展开...
  • 一.标准文件编程库用于文件状态的函数:#include <stdio.h>1.int ferror(FILE* stream);//只是用来判断错误是否...//只是用来判断错误是否发生,不能明确错误的内容当文件结束时,feof返回非0,否则返回0//使...
  • C语言文件读取函数

    千次阅读 2019-09-02 22:04:07
    相关函数 fgets 读取一行 feof 判断文件是否结束 fopen 打开文件 返回一个文件指针 fgetc 读取一个字节
  • 一、readline函数 按行遍历读取文件的方法,通过这个方法,readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline() filename = raw_input('...
  • 文件检测函数 ferror feof

    千次阅读 2014-03-12 09:16:38
    功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。  二、读写文件出错检测函数ferror函数调用格式: ferror(文件指针);  功能:检查文件在用各种输入输出函数进行读写时是否出错。 如...
  • 一、文件IO的概念文件IO指的就是文件的输入输出。这里的输入输出是从内存的角度出发的,也就是说,输入就是从文件读取数据输入到内存中,输出就是从内存中读取数据输出到文件中。二、C库标准IO函数与Linux系统IO函数...
  • 功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。 二、读写文件出错检测函数ferror函数调用格式: ferror(文件指针); 功能:检查文件在用各种输入输出函数进行读写时是否出错。 如...
  • C语言读取文件判断是否读取结束

    千次阅读 2019-09-07 15:44:16
    读取文件时,判断内容是否已经为空当目前所读取的字符为EOF时说明后面内容为空或者直接使用feof()函数 当目前所读取的字符为EOF时说明后面内容为空 char ch; FILE* fp=fopen(********); ch=fgetc(fp); if(ch==EOF) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 720
精华内容 288
关键字:

判断文件结束函数