我想读一个指向文件中整型指针的指针。如何从文件读取指向整型指针的指针?
我使用下面的代码写入文件:
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
无效的内存。关于我在这里可能做错了的任何想法?
你绝对*不*阅读“指针指针”。你有什么是一个二维*数组*(你可能或不可以通过指针处理)。 – 2012-07-15 15:17:14
@KerrekSB道歉。我正在发布整个问题。之前提交过错了。 – 2012-07-15 15:23:21
@KerrekSB此外,我可能是错的,但不是这是一个指针指针“int”?当然,在大多数情况下,它的行为类似于2D阵列,但它不完全是一个。 – 2012-07-15 15:33:29