繁体   English   中英

从C中的二进制文件读取整数数组时中止陷阱

[英]Abort trap when reading integer array from binary file in C

我有2个档案。 一种用于写入二进制文件,另一种用于读取。 现在,我只是试图在基本二进制文件中读写整数数组。 看起来我的代码是成功的,直到打印出期望的结果后遇到中止陷阱6为止。

我已经调查了这个问题,似乎正在发生的事情是我正在尝试访问没有访问权限的内存。 我试图增加阵列的大小来解决此问题,但是,这似乎不起作用。 这是我的2个文件。

写作:

#include <stdio.h>
#include <string.h>

int main(void){

FILE *fp;
int num[4] = {4,2,3,7};


fp = fopen("tst.bin", "wb+");
fwrite(&num, sizeof(int) * 4, 4, fp);

fclose(fp);

return 0;
}

#include <stdio.h>

int main(void){

FILE *fp;
int val[4] = {0};
int i;

fp = fopen("tst.bin", "rb");

fread(&val, sizeof(int) * 4, 4, fp);

fclose(fp);

printf("The value is: \n");

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

return 0;
}

我的结果:

The value is: 
4 2 3 7 
Abort trap: 6
fwrite(&num, sizeof(int) * 4, 4, fp);

fread(num, sizeof(int) * 4, 1, fp);

没有! 你要

fwrite(&val, sizeof(int) * 4, 1, fp);

fread(val, sizeof(int) * 4, 1, fp);

您有4个int的1个数组,而不是4个。 同样,采用这样的数组地址也不是习惯。 只需省略&。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM