我有两个数组,我想将它们都写入(实际上是追加)到一个二进制文件中,以便得到结果 1,2,3,4,5,6,7,8,9, 10
。我的以下代码只执行第一部分,但不附加第二部分:
FILE *fp;
int sum1[5]={1,2,3,4,5};
int sum2[10]={6,7,8,9,10};
int sum[10]={0};
int i;
// Write the first array sum1
fp = fopen("test.bin","wb");
fwrite(sum1, sizeof(int), 5, fp);
fclose(fp);
// Write (append) the second array sum2 at the end of test.bin file
fp = fopen("test.bin","rb");
fseek(fp, 5, SEEK_SET);
fwrite(sum2, sizeof(int), 5, fp);
fclose(fp);
// Show the result if both sum1 and sum2 are merged.
fp = fopen("test.bin","rb");
fread(sum, sizeof(int), 10, fp);
for ( i = 0; i < 10; ++i) {
printf("%d, ", sum[i]);
}
printf("\n");
fclose(fp);
结果是 1, 2, 3, 4, 5, 0, 0, 0, 0, 0,
。这不是我想要的。如何修改代码以反射(reflect)我的需要?谢谢
最佳答案
这个:
fp = fopen("test.bin","rb");
不打开“test.bin”
写,r
代表“读”。
你应该使用:
fp = fopen("test.bin","ab");
这里,a
表示“追加”。无需查找末尾,追加意味着您只能进行追加,因此所有写入都将位于文件末尾。
您还应该对 I/O 函数进行错误检查。
关于c - 将两个数组附加到一个二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44625500/