#include
#include
#include
using namespace std;
struct node
{
int x,y;
};
int main(){
FILE* f1 = fopen("in.dat","w");
node a;
for(int i = 0;i < 10000;i++){
a.x = rand();
a.y = rand();
fwrite(&a,sizeof(a),1,f1);
}
fclose(f1);
f1 = fopen("in.dat","r");
int i = 1;
while(!feof(f1)){
fread(&a,sizeof(a),1,f1);
printf("%d\t",i++);
}
cout << endl;
}
feof()详细讲解
看完这篇博文,再单步跟踪看看,你就会明白了。
feof()宏是判断当前读取内容是否是-1来判断文件结束,这在二进制文件中并不可靠。而文件不指明打开方式的话,默认打开格式就是二进制格式。所以问题应该在这里。
调试下看看有没有异常发生,提前结束了循环
真看不出来,在上边for里加个断点看运行了多少次,再在下边while里加个断点看看吧,
是rand取随机数的问题,你把a.x和a.y赋值为1和2之类的数就好了。
其实你看看即使你不改in.dat文件是80000字节大小,说明输出了10000次。但是只读了25次,应该是输入到文件里的内容有什么问题,让程序出错了。
自己Debug下调试一下,F10单步执行看看
你还会是单步调试下吧
每次执行都是输出25个?