【发布时间】:2020-06-26 14:35:33
【问题描述】:
我有以下 C 代码:
int a[5] = {1,2,3,4,5};
int b[5];
FILE *fp;
fp=fopen("test","w");
fwrite(a,sizeof(a),1,fp);
fread(b,sizeof(b),1,fp);
for (int i = 0; i < 5; i++) {
printf("%d ", b[i]);
}
printf("\n");
在这段代码中,我创建了一个数组a,将其写入文件test,然后尝试将其从文件中读取到b。但是,打印 b 而不是 1, 2, 3, 4, 5 输出 1, 14, 0, 0, 0。
我尝试替换
fwrite(a,sizeof(a),1,fp);
fread(b,sizeof(b),1,fp);
与
fwrite(a,sizeof(int),sizeof(a),fp);
fread(b,sizeof(int),sizeof(b),fp);
得到了同样的结果。
有谁知道我在这里做错了什么?
【问题讨论】:
-
检查
fread的返回值,因为它失败了,您将继续打印垃圾。如果读取失败,您应该采取一些措施。 (请注意,由于您以只写方式打开文件,因此它总是会失败) -
你说得对,fread() 返回 0。你知道可能是什么原因造成的吗?我需要创建一个新的文件流吗?
-
您打开一个文件进行写入然后从中读取?
-
@John3136 是的。这是一个初步测试,因为稍后我将尝试打开文件以在不同的函数中读取,但我想确保它首先工作。
-
@RNdev 你为什么希望它工作?
标签: c arrays io filestream