错误的数据被写入二进制文件

时间:2016-09-28 15:43:02

标签: fwrite

我想使用这种方法将值小于1000的数组保存到二进制文件中:

int * arrayF = new int[300];
// fill the array
const char *filePath = "data.bin";
FILE *file = NULL;
if ((file = fopen(filePath, "w")) == NULL){return 1;}
fwrite(arrayF, 4, 300, file);
fclose(file);

但是,在读取.bin文件后,有几个值不正确。我无法弄清楚问题出在哪里。任何人,请指出我做错了什么?

这里的 printf()函数作为 arrayF 的内容输出,并且在文件中也是如此:

for (int i=0; i<300; i++){
    printf("%d\n",arrayF[i]);
}

28 27 25 26 27 31 27 29 27 27 23 21 21 18 18 21 23 25 23 24 25 24 22 21 20 20 21 21 21 19 18 17 15 15 14 14 15 13 12 的 10 10 10 10 9 8 7 6 6 6 6 五 五 4 4 4 4 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 4 4 4 4 3 4 五 6 6 6 6 6 6 7 7 7 7 7 7 8 8 8 9 9 8 9 10 11 11 11 11 11 11 8 五 五 4 3 3 2 3 五 6 4 4 五 8 五 五 3 2 3 6 11 16 20 21 23 27 27 29 28 三十 37 49 31 50 50 64 229 381 339 191 363 243 232 104 80 115 94 98 51 73 131 202 266 387 400 443 399 319 355 293 166 76 67 86 48 44 60 43 45 45 36 34 39 36 三十 31 27 三十 23 20 22 26 20 五 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 1 1 0 0 1 1 0 0 1 1 1 1 1 6 19 23 21 16 22 33 33 34 28 36 36 34 28 62 26 22 23 19 52 73 33 67 31 42 26 23 42 42 44 42 26 26 13 4 3 五 2 3 7 6 8 11 11 9 24 29 35 45 35 69 55 108 79 75 115 242 362 429 345 206 75 83 63 84 22 77 67 102 23 14 38 18 20 25 22 6 11 13 7 3 3 2 5

当我查看文件内容online时,我发现与预期的内容存在一些差异。例如,从第40个整数开始,我得到一些奇怪的字节移位,所以我最终得到一个额外的字节:

*enter image description here*

0 个答案:

没有答案
相关问题