feof函数返回值始终是零???????????????????????
                    while (!feof(openfile))
                    {
                        str = fgetc(openfile);
                        str = str + '\10';
                        fputc(str, openfile);
                        printf("%c", str);
                        if (ferror(openfile))
                        {
                            perror("Read error");
                            break;
                        }
                        a = feof(openfile);
                        printf("%d",a );
                    }
c
0

2个回答

0
 #include <stdio.h>
#include <stdlib.h>

void main( void )
{
   int  count, total = 0;
   char buffer[100];
   FILE *stream;

   if( (stream = fopen( "feof.c", "r" )) == NULL )
      exit( 1 );

   /* Cycle until end of file reached: */
   while( !feof( stream ) )
   {
      /* Attempt to read in 10 bytes: */
      count = fread( buffer, sizeof( char ), 100, stream );
      if( ferror( stream ) )      {
         printf( "Read error" );
         break;
      }

      /* Total up actual bytes read */
      total += count;
   }
   printf( "Number of bytes read = %d\n", total );
   fclose( stream );
}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于feof函数的一点问题
#include int main(){    FILE *in,*out;    char ch,infile[10],outfile[10];    printf("Enter the infile name:");    scanf("%s",infile);    in=fopen(infile,"r");        if(in==NULL)    {         prin
C语言中的feof函数
函数名   feof 功 能   检测流上的文件结束符 用 法   int feof(FILE *stream); 程序例   #include stdio.h>   int main(void)   {   FILE *stream;   /* open a file for reading *
C语言中fgetc()函数的返回值意义
C语言fgetc()函数的返回值意义 学习C语言的,文件操作,大都会用到它。 它的函数原型: int fgetc(      FILE* stream  ); 这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。 EOF其实就是一个宏 #define EOF (-1) 表示-1. 既然返回的是一个字节,为什么返回值确用4字
关于feof()多读取一次的问题(还未解决)
在编写C语言学生信息管理系统时,想编写一个读取文本的小功能时意外遇到一个小问题。void query()//读取文件 { FILE *P=fopen("E:\\practise\\a.txt","r");//以读的方式打开文件 char s[1024]={0};//分配一个空间 while(!feof(P)) { printf("%s"
feof()原理和用法
一、feof()是什么? feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0 一般在文件操作,中经常使用feof()判断文件是否结束。 二、feof()的经典错误 根据这个函数的定义,一般大家都是这样使用的,但是这样使用,文件中无论是否有内容,都会被判断为“文件不为空”。 #include&amp;amp;lt;stdio.h&amp;amp;gt; int mai...
linux C编程中EOF宏和feof函数的用法
在c语言中经常用EOF和feof()来判断文件的结束,现将有关用法总结如下: 定义 EOF是End Of File 的缩写,是c语言中标准库中定义的宏,定义为:#define  EOF  (-1);   feof() 用于测试流文件的结束,有宏和函数两种定义: 宏定义: #define feof(_stream)  ((_stream)->_flag & _IOEOF)
判断文件结尾的方法(feof函数和EOF)
当以文本方式读写文件时,可以用EOF判断文件是否结尾,因为EOF=-1,而字符的ASCII码不可能为负数。 例如,当fp为文本方式读取的指针时getc(fp)!=EOF可判断是否读到文件结尾当以二进制方式读写文件时,只能用feof函数判断,因为二进制读取数值,可能为负。 feof函数原型为int feof(FILE *stream)当未读到结尾时,返回值为0,读到结尾时,返回值为1feof不仅适
关于feof函数使用的说明
函数原型: int feof(FILE *stream); 功能:检测流上的文件结束符 返回值:feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。 什么时候结束了,当读取到那个字节为0xFF时,就结束了。 EOF是文本文件结束的标志,在文本文件中都是以ASCII码字符表示的,取值范围 0-127 共128个字符,EOF的16进制代码为0x1A(十进
关于C语言中feof的使用
本篇博客结合原理和实例分析了C语言编程中feof()函数的使用和EOF的含义。
feof()多读一次的解决方法
查看 stdio.h 可以看到如下定义:   #define  EOF  (-1)   #define  _IOEOF  0x0010  #define  feof(_stream)  ((_stream)->_flag & _IOEOF)   由此可以看出,这两种方式的原理是不同的。   在这里先说下EOF和feof()这个两个宏定义,在我们学的课本中有这样的描述。 EOF是
feof的使用
在未知文件长度的 情况下,对文件进行读写,要作好文件读写结束的判断。 但feof()有点小毛病,特点:先读,根据读的结果来置位标志位,然后依据标志位来判断是否结束,故有如下三种 写法: 第一种写法,会读到标志位,不应采取,新手,容易范的错误。 第二种写法,可行,但是循环写的不够漂亮。 第三种写法, 应该作为标准写法来推行。 /*  *方案一:先判断,后读取  */ while (
fread函数 和 feof函数
fread(从文件流读取数据) 相关函数 fopen,fwrite,fseek,fscanf 表头文件 #include 定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);
函数feof使用注意事项
本文主要讲讲当feof遇到fgets时,发生的尴尬故事!
怎样解决使用feof()函数时出现的问题?
feof函数        昨天在做一个课程设计时,一个函数的功能是将文件中的数据一条条的读到链表中去。既然不确定有多少条数据,那只能借助feof()函数了,本来文件部分就没学好,也就知道这一个方法。但是在测试的后就发现了它的问题,就是在判断是否到达文件尾的时候,它会多读一次,就导致从文件读出的部分内容是错的。可能在课堂上老师就讲到了,可是我不知道当时在干啥,反正就是不记得。更关键的是我还不知道
C语言再学习 -- EOF、feof函数、ferror函数
EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。 #define EOF (-1) 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,
关于feof函数多读一次的问题
在完成通信录的过程中总是多读出一个0,对此我进行了多次调试。 下面是成功的代码 void load_txl(Link *head) { Link temp = *head; Link newnode = NULL; FILE *fp; int i; if((fp = fopen("txl.txt","r")) == NULL) { printf("打开失败!\n");
“采用while(!feof(FP)){...}进行文件复制时,目标文档总会比源文档多出一些” 原因探析及解决方法
1.问题提出: 目标:  假设源文件共有3个double型的数据,1.0,2.0,3.0,我希望将源文件中的数据复制到另一文件中,都以二进制形式打开和保存。 设源文件路径为inpath,目标文件为outpath。   代码:         FILE *fin,*fout;         fin=fopen(inpath,"rb");         fout=fopen(outp
feof()函数和EOF结束符的区别与联系
windows下的txt文本文件中的内容都是ASCⅡ代码值的形式存放的。众所周知,ASCII 码的范围是在0至255.对于其他范围的值是无法识别的,因此像-1这样的值是不能转化成相应的字符存在于文本文件当中的。但是对于二进制文件来说,-1确实是可以出现的。 feof()函数在c/c++中是用来判断当前要操作的文件是否结尾,如果文件已结尾,返回值为1,否则就返回0.它判断文件是否结尾的原理是与数据
ftell、fread、fseek、feof 详细的使用介绍与注意细节
1. long ftell(FILE *stream);功能:用于得到文件位置指针当前位置相对于文件首的偏移字节数2. size_t fread ( void *buffer, size_t size, size_t count, FILE *stream)功能:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回
关于C语言feof()函数判断文件结尾的问题分析
相信很多C语言初学者都遇到过这种情况: 使用 while(!feof(fp)) { fscanf(...); //或者 //fread(...) } 读文件时经常会重复读最后一段字符。 据说当年的X老师对此也很困惑,还曾经对此做过专题分析…… 实际上这并没有多么高深莫测,也不是feof()函数的bug,只是我们不了解feof()函数的性质。 feof()的性质: 只
feof 函数 while循环引发的断错误及调试方法
学习lex and yacc,例子ch1-05.*执行命令 如下:               lex   ch1-05.l               bison  -d  ch1-05.y               cc   -c   lex.y.c   ch1-05.tab.c               cc   -o   ch105     le
feof() 函数的陷阱……
<br />使用feof()的时候,掉陷阱里了,总是少输出一条:<br />  while ( !feof(fp) ) { flag = fgets(buffer,300,fp); cout << buffer<<endl; sscanf(buffer,"%s %d %d", temp_name,&salary,&count); temp = new Set; temp->set_name(temp_name); temp->set
fread feof 文件尾读取重复的问题
问题:  多路归并排序时,每次通过fread读取小文件里的一个double数据,通过feof判断是否读取结束,  结果,在最后总的排序文件中,每个小文件的最后一行的数据回重复一遍 原因:   feof只是检查标志位,如果是good则返回0,是bad就返回1。   更改标志位的fread函数,只有当它读不到东西了,才会把标志位从good变成bad,当fread读到最后一个字符时,由
feof多读一次问题分析
在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多执行了一次。对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。 而我们经常这样把它使用在循环中: int c; while(!feof(fp))
文件操作函数feof判断是否指向文件的结尾处,结尾即为空字符
#include #include int main() { FILE *fStream = NULL; int iReturn = 1; char ch; fStream = fopen("d:\\wimrepairread.txt","r+"); if (fStream != NULL) { fseek(fStream,0,SEEK_SET); ch = fg
feof多读一次数据的问题
在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()或者fread执行读操作,feof()才能探测到文件结尾。这样就多执行了一次。对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。 开始我的代码是这样的 typedef struct {     cha
文件流中读行的正确使用(fgets、feof、ferror)
char *fgets(char *buf, int bufsize, FILE *stream);功能fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,调用fgets函数时,最多只能读入bufsize-
nodelist.length的返回值始终是零,为什么?
rnrn rnrnrnrn 1rn 2rnrnrnrnrnnodelist.length的返回值始终是零,为什么?rn这个document.getElementsByTagName('p')的返回值不是数组而是一个NODELIST对象 这是个节点列表集合对象 这个对象有LENGTH属性 取了P 的元素节点应该有2个啊 为什么返回值一直是0呢 BODY 中什么也没有的话 也是零 各位帮帮忙rn那么 这个
21.判断字符串是否为回文
给定程序中,函数fun的功能是:判断形参s所指字符串是否是回文,若是,函数返回值1,不是,返回值0.“回文”是正读和反读都是一样的字符串(不区分大小写)。 #define _CRT_SECURE_NO_WARNINGS #include #include #include int fun(char *s) { char *lp, *rp; lp = s; rp = s + strl
fgets重复读取最后一行,都是feof惹的祸
写了一个小程序用于读取文件,每次输出时最后一行都重复输出,经Debug发现是因为feof慢了一拍。当fgets读过最后哦一行之后,feof()仍然返回的是0,又一次读出错之后feof才检测到文件结束。下面用代码来说明:  FILE *fd;   char buf[1024];   string temp;   fd = fopen(filename.c_str(), "rb");   i
feof多读一次问题解决方案
feof(fp)多读一次问题 解决一: int c; c = fgetc(fp);   while(!feof(fp)) {   printf("%x\n",c);   c = fgetc(fp);   } feof(fp)先读再判断是否到文件尾 解决二: int c; fseek(fp, 0, 2); c = ftell(fp); rewind(fp)
关于使用fseek函数之后feof函数无法结束文件的警告 http://bbs.csdn.net/topics/390759596
发表于: 2014-04-14 18:26:09 c语言c++ 近期刚学到fseek函数,可是遇到了难题。用了fseek函数后,再feof函数判断文件结束。但是打死也判断走不出循环。搞得我脑袋都是大的。本来,fseek函数指到文件末尾的时候,feof函数就应该返回1.但是一直都是返回0.上网查了查资料(关于问题的资料不多)查了好久才查出来。下面我们就来做个实验,下面是源代码: #in
很基本也很诡异的fread, feof
先看一段非常简单的程序:   #include &amp;lt;stdio.h&amp;gt; int main(int argc, char** argv) { char buf[8193]; FILE* fp = fopen(&quot;tmp.bin&quot;, &quot;wb+&quot;); fwrite(buf, 1, 8192, fp); fseek(fp, ...
C语言按行读取文件的正确使用:fgets、feof、ferror
转自 https://blog.csdn.net/yss28/article/details/53453959 一、fgets函数 原型 char *fgets(char *buf, int bufsize, FILE *stream); 功能 fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时...
从文件读入数据块时用feof(fp)判断文件结尾真的保险吗?
今天用文件输入时发现了一个值得注意的问题。 先看程序: #include #include int main(void) { FILE*in=fopen("1.txt","r"); int a,b; if(in==NULL) { printf("error:cannot open infile !\n"); r
文件末尾检测函数feof()
用于判断文件指针是否到达文件末尾,调用格式为: feof(fp); 比较坑的地方是使用此函数用于循环判断时,会多循环一次,这是由于当指针已经读完最后一个字符时,还不知道已经到达文件末尾,因此需要再循环一次。 解决的方法是先读取一次,再循坏!!!
用feof()判断文件时出现多读内容的问题
昨天将自己以前做的电子通讯录加上了文件读写的功能,是的数据可以关机保存,开机读取。 在修改的过程中出现了一个问题就是每次开启程序时,读文件内的内容总是会在最后多读一串数据,经过上网查询找到了问题所在。 下面我先把我原来写的错误的程序部分贴出 while(0 == feof(stream))  { fread(&from,sizeof(struct file_node),1,stream)
C语言 while(feof(fp)){}多循环一次解决方案
不用feof() 使用fgetc(fp)==EOF判断是否进行x
PHP feof() 函数读文件的使用
 (PHP 4, PHP 5)feof — 测试文件指针是否到了文件结束的位置如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。 文件指针必须是有效的,必须指向由 fopen() 或fsockopen() 成功打开的
feof函数多读一次问题解决方案
详细讲解了feof函数多读一次问题解决方案
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据零教程 区块链零费用