点羽染墨 2015-06-10 14:20 采纳率: 100%
浏览 1548
已采纳

这个程序为什么输出的是25个呢?

#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;

}

  • 写回答

7条回答 默认 最新

  • 零度永恒 2015-06-15 14:21
    关注

    feof()详细讲解

    看完这篇博文,再单步跟踪看看,你就会明白了。
    feof()宏是判断当前读取内容是否是-1来判断文件结束,这在二进制文件中并不可靠。而文件不指明打开方式的话,默认打开格式就是二进制格式。所以问题应该在这里。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?