About "feof()"

原创 2004年09月17日 19:09:00

看下面这个程序,怎么会输出两次呢?如果feof()没问题的话,请告诉我为什么?

#include
main()
{FILE *fp;int n=74,k;
printf("/n");
fp=fopen("joseph.b","wb+");
fwrite(&n,2,1,fp);fclose(fp);
fp=fopen("joseph.b","rb+");
while(!feof(fp)){fread(&k,2,1,fp);
   printf("%d ",k);};
fclose(fp);
}

当文件打开时,文件指针指向0并不是指向第一个字符,当fread之后指针指向它刚读过的位置,并没有指向文件尾,所以feof执行返回为0,当fread再一次执行时位置后移,feof才会返回1.

这想应该是这样!msdn的解释是:fread返回0时为出错,可以用feof或ferror为判断这个错误。
如果fread不出错就是不到末尾,它多读一次才会出错啊!

C语言中的feof函数

函数名   feof 功 能   检测流上的文件结束符 用 法   int feof(FILE *stream); 程序例   #incl...
  • huangjianxiang1875
  • huangjianxiang1875
  • 2012年05月07日 10:36
  • 6040

feof() 函数的陷阱……

使用feof()的时候,掉陷阱里了,总是少输出一条:  while ( !feof(fp) ) { flag = fgets(buffer,300,fp); cout ...
  • joker0910
  • joker0910
  • 2011年03月10日 19:09
  • 3050

关于C语言中feof的使用

本篇博客结合原理和实例分析了C语言编程中feof()函数的使用和EOF的含义。
  • lhyer
  • lhyer
  • 2015年04月12日 17:44
  • 4253

怎样解决使用feof()函数时出现的问题?

feof函数        昨天在做一个课程设计时,一个函数的功能是将文件中的数据一条条的读到链表中去。既然不确定有多少条数据,那只能借助feof()函数了,本来文件部分就没学好,也就知道这一个方法...
  • vcx08
  • vcx08
  • 2016年06月30日 19:04
  • 1035

feof 函数 while循环引发的断错误及调试方法

学习lex and yacc,例子ch1-05.*执行命令 如下:               lex   ch1-05.l               bison  -d  ch1-05.y    ...
  • kevinguozuoyong
  • kevinguozuoyong
  • 2010年03月23日 00:31
  • 1551

feof()

【转】C语言feof()函数的使用 这里首先谴责一下中国铁道出版社出版的《C++函数库查询词典》,其中将feof()的返回值写错了,正好写反了,导致我浪费了4个多小时,不知道错在哪里。正确的...
  • u012420145
  • u012420145
  • 2014年03月09日 11:39
  • 543

feof()多读一次的解决方法

查看 stdio.h 可以看到如下定义:   #define  EOF  (-1)   #define  _IOEOF  0x0010  #define  feof(_stream)  ((...
  • woaisia
  • woaisia
  • 2015年06月10日 14:23
  • 3273

用feof()判断文件时出现多读内容的问题

昨天将自己以前做的电子通讯录加上了文件读写的功能,是的数据可以关机保存,开机读取。 在修改的过程中出现了一个问题就是每次开启程序时,读文件内的内容总是会在最后多读一串数据,经过上网查询找到了问题所在。...
  • guanyasu
  • guanyasu
  • 2016年10月19日 16:27
  • 726

“采用while(!feof(FP)){...}进行文件复制时,目标文档总会比源文档多出一些” 原因探析及解决方法

1.问题提出: 目标:  假设源文件共有3个double型的数据,1.0,2.0,3.0,我希望将源文件中的数据复制到另一文件中,都以二进制形式打开和保存。 设源文件路径为inpath,目标文件...
  • gll028
  • gll028
  • 2013年03月20日 17:58
  • 585

关于feof函数的一点问题

#include int main(){    FILE *in,*out;    char ch,infile[10],outfile[10];    printf("Enter the infil...
  • sambian
  • sambian
  • 2006年03月30日 12:39
  • 9969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:About "feof()"
举报原因:
原因补充:

(最多只允许输入30个字)