我用循环的方式从二进制文件中循环读取结构体对象信息,用if(fin.eof())break;跳出循环,但在之后,我发现如果再使用这个fin.open()函数打开另一个二进制文件时,文件指针仍然指向着文件末尾,再读入只能读入空字符,即使采用fin.seekg(ios::beg)语句也不行。求高手帮我解决一下这个问题。
(我用的VC++6.0环境,不要告诉我再建立一个新的对象,因为我试过那样一定是正确的,而且如果不用if(fin.eof())break;跳出循环也不会读出空字符,我只是想知道能不能将已经指向文件结尾的对象再定义到文件头)
c++中关于eof()函数的一个问题
fin.clear(); \/\/重新打开文件前,先clear,再open 在open成功后不会对 fstream中状态进行操作,而open失败的话会设置_MyState为failbit,并且在close操作时如果本身是空文件,也会设置state为failbit,这样造成一次失败之后的其他很多操作都是失败的,因为很多fstream操作会先判断state;而clear函数是将fstre...
c++ eof()的一个典型问题
关于eof()函数:eof用于判断,返回布尔值。根据cplusplus.com的说明,当流的eofbit错误状态标志被设置(表示上一次输入操作已到达文件末尾)时,返回true,否则返回false。即,当eofbit被置为1时,返回true,否则返回false。对于第一节的问题,可以这样解释:按照常规理解,如果到达文件末尾,eofbit应该被置为...
c++eof()函数对文件及字符串的处理解析
在C\/C++编程中处理文件时,`eof()`函数的使用对于判断文件是否为空或是否到达文件结尾至关重要。然而,操作过程中可能会遇到问题,如无法准确判断文件状态,这可能导致程序运行结果不稳定。例如,多输出一个字符或陷入死循环。输出结果分析显示,`eof()`函数的返回值可能会误导程序员。该函数返回true时,...
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的问题
Ctrl+Z 是 EOF.部分修改一下:char ch;while( 1){ ch = cin.get();if (ch == EOF) break;cin.unget();a[i] = cin.get() -'0';i++;} 改好了。运行,拍入:1111 Ctrl+Z 回车 得:k=15
C++中的EOF的问题
关键在于你是如何转为int的,有符号数把EOF转成int,就不会丢掉符号位,仍然为-1!如果是无符号数把EOF转成int,就会丢掉符号位,变成255了!
c++中文件打开用了eof()后,为什么文件就再也打不开了啊??
eof()函数的设定是因为遇到文件尾了,EOF其实是-1值,当遇到文件末尾,则设置eof,并且返回eof()为true,然后对象不再读取文件,也就是输入流被截断 可以用fstream对象的clear来清除 你可以用iofile.clear();来重新设置
C++,关于eof(),请教大神
ture eof状态是当前位置已无内容可读,但还要请求读取时才会设置个EOF状态,并返回EOF(即 -1)有效得知文件是否还有内容可读的好方法是 a.rdbuf()->in_avail()返回末读字符的个数 比如:std::ifstream file("a.txt");if (!a.rdbuf()->in_avail()) std::cerr << "文件a.txt无内容"...
C++ 为什么while(! iofile.eof() )读取文件会出现死循环
eof() 函数要跟在读语句以后使用,用来判断前面的读语句是否读到文件结束符EOF了。EOF -- end of file.eof() 函数本身,并不到输入流里去取数,不去读取文件。单用 while(!iofile.eof()); 由于没有别的读语句去读文件,而自身又不会去读取文件,只是不断地判断 iofile的 EOF 标志位状态,...
C++问题 EOF
因为 a 和 b 都是整型 一直不能把 字符a 给读取掉, 所以a就一直在那里, 程序会一直卡在那,因为程序是从没被读掉的字符开始的,另外 你打上 EOF 是用于多组数据输入,处理多组数据时用得 会一直读到文件的结尾 或者输入 Ctrl+C时结束