C++ 为什么while(! iofile.eof() )读取文件会出现死循环

如题所述

eof() 函数要跟在读语句以后使用,用来判断前面的读语句是否读到文件结束符EOF了。EOF -- end of file.
eof() 函数本身,并不到输入流里去取数,不去读取文件。
单用 while(!iofile.eof()); 由于没有别的读语句去读文件,而自身又不会去读取文件,只是不断地判断 iofile的 EOF 标志位状态,那就永远是 "没有读到EOF". 死循环。
中国教科书 一脉相承,爱用 while(!fp.eof()) { 读,打印;}; [读到了EOF,还重复输出最后一项]
而不用 正确的: while(1){读; if (fp.eof()) break; 打印;};
误人子弟哦。
温馨提示:内容为网友见解,仅供参考
无其他回答

C++ 为什么while(! iofile.eof() )读取文件会出现死循环
iofile.seekp(i*sizeof(stu_obj),ios::beg);的时候指向文件尾了 后面的读取操作就会瓦掉。可以改为 while(!iofile.eof()){ iofile>>stu_obj.tag>>stu_obj.num>>stu_obj.name>>stu_obj.score;stu_obj.disp();i++;iofile.seekp(i*sizeof(stu_obj),ios::beg);\/\/针对输出文件的操作...

C++ 为什么while(! iofile.eof() )读取文件会出现死循环
单用 while(!iofile.eof()); 由于没有别的读语句去读文件,而自身又不会去读取文件,只是不断地判断 iofile的 EOF 标志位状态,那就永远是 "没有读到EOF". 死循环。中国教科书 一脉相承,爱用 while(!fp.eof()) { 读,打印;}; [读到了EOF,还重复输出最后一项]而不用 正确的: whi...

C++,eof()死循环
不能跳出循环是原因不在eof,在Length_rec函数里!!由于这个函数的while永远不会结束,导致了永远不可能return i,也就永远退不出eof。修改为\\ int Records::Length_rec(char a[]){ int i=0;while(a[i]!='\\0') \/\/这里修改了。i++;return i;} ...

c++中文件打开用了eof()后,为什么文件就再也打不开了啊??
eof()函数的设定是因为遇到文件尾了,EOF其实是-1值,当遇到文件末尾,则设置eof,并且返回eof()为true,然后对象不再读取文件,也就是输入流被截断 可以用fstream对象的clear来清除 你可以用iofile.clear();来重新设置

c++中,在while循环中到文件尾eof(),怎么就会输出空一行呢?
eof 就是文件结束 因为文件指针到最后一个字符时并不会触发eof,再读一次读不到数据才触发eof,这样c还保留着上一次的数据,又被输出一次,peek()方法是读取文件指针下一个位置的值,但并不移动文件指针,用在这里很合适 while (fin.peek()!=EOF)

C++文件读取为什么最后一个会显示两次,详细求解。源代码如下。
问题出在while(!in.eof()),eof判断文件末尾是靠in>>读取文件移动文件指针来进行的 假设文件中有abc这3个字符,当前读出了c,按正常理解文件已经到达末尾,但是eof判断不出来,所以再次执行了循环,但本次读取是失败的,ch中仍保存着上次读出的字符c,进行输出,再次判断eof,这次它判断出是文件末尾,...

c++里读写文件函数i_file.good()使用问题,代码如下
这是一个很经典的问题了。while(i_file.good())和while (!i_file.eof())存在同样的问题,你到网上搜一下“C\/C++文件之eof()”,就明白怎么回事了。注意最后一段话:“2. 读取文件过程中,读取非char型时,使用peek判断文件尾将不再适用,循环判断条件应改用>>操作符进行读取,若读入char型...

为什么我建立的一个文件在读取的时候是个死循环啊~
按F5键,就可以在Debug里运行了。你在需要停止的那行程序用鼠标点一下,再按F9键,就可以加入断点。按F10是单步执行。

C语言中 这 while(a!=EOF) 条件
在C语言中,while循环结构起着关键的作用。其基本逻辑是,当括号内的条件"a!=EOF"满足时,即当变量a的值不等于文件结束符(-1)时,循环体内的代码将被执行。"!="是C语言中的不等于运算符,它会检查a和b的值是否相等,如果不同,条件为真,循环继续,否则退出循环。这里的EOF(End Of File)是...

c语言中这while(a!=eof)条件的意义是什么?
1. while循环与文件读取 在C语言中,`while`循环是一种常用的控制结构,用于重复执行一段代码,直到给定的条件不再满足。在文件操作上下文中,`while`循环经常用于逐行或逐块地读取文件内容。2. EOF的概念 EOF是“End of File”的缩写,表示文件结束标记。在C语言中,这个标记用于指示已经...

相似回答