使用int [10]编写文件而不使用''或'\ n',当我读它时,有什么问题?

时间:2013-12-01 03:20:08

标签: c++ c fopen fread printf

#define MAXN 1000000
FILE *fp1;
fp1 = fopen("num.txt", "w");
for(int i=0; i<MAXN; i++) {
    int a = rand() % (MAXN/10);
    fprintf(fp1, "%d", a);
}
...
FILE *fp2;
fp2 = fopen("num.txt", "r");
int a;
fscanf(fp2, "%d", &a);
printf("%d", a);

当我创建文件时,将其打开到fp。

我用fread读了它,我得错了数

(例如第一个数字6414,我得到了数字-1182340738)

我用'\ n'或''写它没有错误。

2 个答案:

答案 0 :(得分:4)

似乎没有分隔数字的字符,当一个数字结束而下一个数字开始时,你的解析器如何知道?

我想这是你的问题,它认为这是一个非常大的数字,并且溢出到负面。

答案 1 :(得分:0)

如果你添加\n,文件缓冲区将刷新,但没有\n它将不会刷新, 所以你应该在打开fp2之前关闭第一个fp1。