【发布时间】:2019-05-14 18:15:07
【问题描述】:
我的程序将矩阵存储在二进制文件中,当我尝试在相同的程序使用过程中“加载”它们时,一切正常。
但是,当我关闭程序并稍后使用它时,无法访问相同的文件,并且出现分段错误(核心转储)错误。
这是“加载”矩阵的函数:
void Loading(int mat**){
char* name = malloc(sizeof(char)*20);
printf("Enter name of the file");
scanf("%s",name);
FILE* file=fopen(name,"rb");
if (file==NULL){
printf("error opening file");
exit(0);
}
fread(mat,sizeof(int)*M*M,1,file);
fclose(fichier);
}
其中 M 是一个常数。
当我在同一程序使用期间存储/加载多次时,它再次完美运行
对不起,我不是说英语的人
【问题讨论】:
-
请正确缩进您的代码,使其可读。可读的代码本质上对你有好处。
-
问题很可能出在调用
Loading的代码中,而您没有显示。Loading看起来或多或少是正确的。顺便说一句:(int mat**)不是 C,应该是(int **mat)吗?请显示真实代码。另请阅读:How to Ask 和 minimal reproducible example。 -
要回答这个问题,我们至少需要查看写入文件的代码。最好还显示在读取和写入两种情况下数组 id 是如何分配的。
-
请复制/粘贴真实代码。
-
@ryyker:“否则,这似乎是一个写得相当好的问题”我反对,上下文丢失了。散文是不够的,还要看代码,不然就多猜了。
标签: c file segmentation-fault