[英]Reading an integer and then 3 structures from a binary file in 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.