我想从文件中读取指向整数指针的指针。
我正在使用以下代码写入文件:
FILE *fp;
int **myArray = NULL;
int i, j;
for(i = 0; i < 3; i++){
myArray = (int **)realloc(myArray, (i+1)*sizeof(int *));
for(j = 0; j < 4; j++){
myArray[i] = (int *)realloc(myArray[i], (j+1)*sizeof(int));
myArray[i][j] = i*j*10;
}
}
if((fp=fopen("test", "wb"))==NULL) {
printf("Cannot open file.\n");
}
if(fwrite(myArray, sizeof(int), 3*4, fp) != 12)
printf("File write error.");
fclose(fp);
我正在使用以下代码来阅读,但是在运行它时出现了段错误。
FILE *fp;
int **myArray = NULL;
int i, j;
for(i = 0; i < 3; i++){
myArray = (int **)realloc(myArray, (i+1)*sizeof(int *));
for(j = 0; j < 4; j++){
myArray[i] = (int *)realloc(myArray[i], (j+1)*sizeof(int));
}
}
if((fp=fopen("test", "rb"))==NULL) {
printf("Cannot open file.\n");
}
if(fread(myArray, sizeof(int), 3*4, fp) != 12) {
if(feof(fp))
printf("Premature end of file.");
else
printf("File read error.");
}
for(i=0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("%d\n", myArray[i][j]);
}
}
fclose(fp);
编辑:在更彻底的调试中,我发现该fread
函数使分配的内存myArray
无效。关于我在这里可能做错的任何想法?