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 *
关于使用函数feof的理解
#include #include int main() { FILE *in, *out; char ch, infile[10], outfile[10]; printf("输入读入文件的名字:"); scanf("%s", infile); printf("输入输出文件的名字:"); scanf("%s", outfile); if ((in = fop
关于feof函数使用的说明
函数原型: int feof(FILE *stream); 功能:检测流上的文件结束符 返回值:feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。 什么时候结束了,当读取到那个字节为0xFF时,就结束了。 EOF是文本文件结束的标志,在文本文件中都是以ASCII码字符表示的,取值范围 0-127 共128个字符,EOF的16进制代码为0x1A(十进
feof(),ferror()文件检测函数
原型: feof(FILE *fp); 检测是否到达文件结尾,如果到达返回非零值,否则返回零.原型: ferror(FILE *fp);发生读写错误,返回一个非零值,否则返回零值. 判断示例:if(feof(pi)!=0) puts("Error in reading file."); if(ferror(pi)!=0) puts("Error in writing file.")
关于C语言中feof的使用
本篇博客结合原理和实例分析了C语言编程中feof()函数的使用和EOF的含义。
C语言pow函数返回值一直是0
    输出的竟然是0,去查看了一下,原来这个函数返回的是一个float类型的好吧,改成        但是结果特别丑,其实也可以这样:    这样就可以正确输出int类型的结果了,但是需要用到int来强制转换一下...
【牛客网】C/C++牛客网专项刷题(03)
以下为牛客网C/C++专项刷题:   1、阅读以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()。 void main() { char c1,c2; int a1,a2; c1=getchar(); scanf(&quot;%2d&quot;,&amp;amp;a1); c2=getchar(); scanf(&quot;%3d&quot;,&amp;amp;a2); ...
feof()原理和用法
一、feof()是什么? feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0 一般在文件操作,中经常使用feof()判断文件是否结束。 二、feof()的经典错误 根据这个函数的定义,一般大家都是这样使用的,但是这样使用,文件中无论是否有内容,都会被判断为“文件不为空”。 #include&amp;amp;lt;stdio.h&amp;amp;gt; int mai...
fread函数 和 feof函数
fread(从文件流读取数据) 相关函数 fopen,fwrite,fseek,fscanf 表头文件 #include 定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);
feof()多读一次的解决方法
查看 stdio.h 可以看到如下定义:   #define  EOF  (-1)   #define  _IOEOF  0x0010  #define  feof(_stream)  ((_stream)->_flag & _IOEOF)   由此可以看出,这两种方式的原理是不同的。   在这里先说下EOF和feof()这个两个宏定义,在我们学的课本中有这样的描述。 EOF是
函数feof使用注意事项
本文主要讲讲当feof遇到fgets时,发生的尴尬故事!
feof()函数和EOF结束符的区别与联系
windows下的txt文本文件中的内容都是ASCⅡ代码值的形式存放的。众所周知,ASCII 码的范围是在0至255.对于其他范围的值是无法识别的,因此像-1这样的值是不能转化成相应的字符存在于文本文件当中的。但是对于二进制文件来说,-1确实是可以出现的。 feof()函数在c/c++中是用来判断当前要操作的文件是否结尾,如果文件已结尾,返回值为1,否则就返回0.它判断文件是否结尾的原理是与数据
feof多读一次问题分析
在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多执行了一次。对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。 而我们经常这样把它使用在循环中: int c; while(!feof(fp))
关于C语言feof()函数判断文件结尾的问题分析
相信很多C语言初学者都遇到过这种情况: 使用 while(!feof(fp)) { fscanf(...); //或者 //fread(...) } 读文件时经常会重复读最后一段字符。 据说当年的X老师对此也很困惑,还曾经对此做过专题分析…… 实际上这并没有多么高深莫测,也不是feof()函数的bug,只是我们不了解feof()函数的性质。 feof()的性质: 只
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)
feof的使用
在未知文件长度的 情况下,对文件进行读写,要作好文件读写结束的判断。 但feof()有点小毛病,特点:先读,根据读的结果来置位标志位,然后依据标志位来判断是否结束,故有如下三种 写法: 第一种写法,会读到标志位,不应采取,新手,容易范的错误。 第二种写法,可行,但是循环写的不够漂亮。 第三种写法, 应该作为标准写法来推行。 /*  *方案一:先判断,后读取  */ while (
数组中的最小值为什么总是0
下面程序运行为什么出现的最值中为什么最小值总是0? 这是一个来自论坛的问题,在此借助其代码分析此现象 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Compare { public static void main(Strin
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
怎样解决使用feof()函数时出现的问题?
feof函数        昨天在做一个课程设计时,一个函数的功能是将文件中的数据一条条的读到链表中去。既然不确定有多少条数据,那只能借助feof()函数了,本来文件部分就没学好,也就知道这一个方法。但是在测试的后就发现了它的问题,就是在判断是否到达文件尾的时候,它会多读一次,就导致从文件读出的部分内容是错的。可能在课堂上老师就讲到了,可是我不知道当时在干啥,反正就是不记得。更关键的是我还不知道
文件操作函数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
fread feof 文件尾读取重复的问题
问题:  多路归并排序时,每次通过fread读取小文件里的一个double数据,通过feof判断是否读取结束,  结果,在最后总的排序文件中,每个小文件的最后一行的数据回重复一遍 原因:   feof只是检查标志位,如果是good则返回0,是bad就返回1。   更改标志位的fread函数,只有当它读不到东西了,才会把标志位从good变成bad,当fread读到最后一个字符时,由
文件流中读行的正确使用(fgets、feof、ferror)
char *fgets(char *buf, int bufsize, FILE *stream);功能fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,调用fgets函数时,最多只能读入bufsize-
“采用while(!feof(FP)){...}进行文件复制时,目标文档总会比源文档多出一些” 原因探析及解决方法
1.问题提出: 目标:  假设源文件共有3个double型的数据,1.0,2.0,3.0,我希望将源文件中的数据复制到另一文件中,都以二进制形式打开和保存。 设源文件路径为inpath,目标文件为outpath。   代码:         FILE *fin,*fout;         fin=fopen(inpath,"rb");         fout=fopen(outp
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字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回
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
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()多读取一次的问题(还未解决)
在编写C语言学生信息管理系统时,想编写一个读取文本的小功能时意外遇到一个小问题。void query()//读取文件 { FILE *P=fopen("E:\\practise\\a.txt","r");//以读的方式打开文件 char s[1024]={0};//分配一个空间 while(!feof(P)) { printf("%s"
feof多读一次数据的问题
在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()或者fread执行读操作,feof()才能探测到文件结尾。这样就多执行了一次。对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。 开始我的代码是这样的 typedef struct {     cha
用feof()判断文件时出现多读内容的问题
昨天将自己以前做的电子通讯录加上了文件读写的功能,是的数据可以关机保存,开机读取。 在修改的过程中出现了一个问题就是每次开启程序时,读文件内的内容总是会在最后多读一串数据,经过上网查询找到了问题所在。 下面我先把我原来写的错误的程序部分贴出 while(0 == feof(stream))  { fread(&from,sizeof(struct file_node),1,stream)
关于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");
nodelist.length的返回值始终是零,为什么?
rnrn rnrnrnrn 1rn 2rnrnrnrnrnnodelist.length的返回值始终是零,为什么?rn这个document.getElementsByTagName('p')的返回值不是数组而是一个NODELIST对象 这是个节点列表集合对象 这个对象有LENGTH属性 取了P 的元素节点应该有2个啊 为什么返回值一直是0呢 BODY 中什么也没有的话 也是零 各位帮帮忙rn那么 这个
fgets重复读取最后一行,都是feof惹的祸
写了一个小程序用于读取文件,每次输出时最后一行都重复输出,经Debug发现是因为feof慢了一拍。当fgets读过最后哦一行之后,feof()仍然返回的是0,又一次读出错之后feof才检测到文件结束。下面用代码来说明:  FILE *fd;   char buf[1024];   string temp;   fd = fopen(filename.c_str(), "rb");   i
从文件读入数据块时用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
C语言feof()函数用法.
feof()函数的意思是用来判断你读到了文件的外面. 而不是判断文件指针是否到达文件尾部(指向文件最后一个字符的后面). 如果在while表达式里直接用feof()判断是否到达文件尾,则结果总会多读一次. 下面是正确的写法. #include int main() { int c; FILE*file=fopen("test.txt","r"); while(1){ c=fg
关于Linux下feof()输出文件最后一行时重复的问题
       当我们用while(!feof(fp)){...}判断文件是否结束,并处理文件内容的时候经常会遇到文件最后一行重复两遍的问题,这是因为feof在遇到文件结束符EOF这个位置时,返回的还是0;而到下一个位置时才返回1,这时while循环才退出。所以单纯用上面的while循环判断会出现重复的现象。      解决办法是,读的时候检查是否到达了文件尾部,如     while (f
嵌入式Linux C编程学习之路(十四)——标准IO之feof,ferror,clearerr
1. 当返回错误时,怎样判读是已经到达文件结尾,还是读错呢?  a. int feof(FILE *stream); 功能:判断是否已经到文件结束 参数:文件流 返回值:到文件结束,返回为非0,没有则返回0 b.int ferror(FILE *stream); 功能:判断是否读写错误 参数:文件流   返回值:是读写错误,返回为非0,不是则返回0 c.void clearer...
C语言 while(feof(fp)){}多循环一次解决方案
不用feof() 使用fgetc(fp)==EOF判断是否进行x
文件末尾检测函数feof()
用于判断文件指针是否到达文件末尾,调用格式为: feof(fp); 比较坑的地方是使用此函数用于循环判断时,会多循环一次,这是由于当指针已经读完最后一个字符时,还不知道已经到达文件末尾,因此需要再循环一次。 解决的方法是先读取一次,再循坏!!!
feof()函数读取文件和EOF结束符标志问题
       windows下的txt文本文件中的内容都是ASC Ⅱ代码值的形式存放的。众所周知,ASC 2码的范围是在0至255.对于其他范围的值是无法识别的,因此像-1这样的值是不能转化成相应的字符存在于文本文件当中的。但是对于二进制文件来说,-1确实是可以出现的。    feof()函数在c/c++中是用来判断当前要操作的文件是否结尾,如果文件已结尾,返回值为1,否则就返回0.它判断文件
文章热词 零系数游程长度 非零系数Level值 零系数解析总个数 机器学习 机器学习课程
相关热词 c++ feof判断eof c++ system函数返回值 c++调用lua函数返回值 从零学习python 从零学习人工智能