我想讀一個指向文件中整型指針的指針。如何從文件讀取指向整型指針的指針?
我使用下面的代碼寫入文件:
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