我想讀取一個整數文件,其中包含文件中整數的數量作爲第一個整數,但是當我在讀取文件後嘗試關閉文件時,出現seg錯誤。fclose上的Seg錯誤?
我讀過,如果文件指針爲空,而您嘗試關閉它,則會發生段錯誤。然而,我檢查它是否爲空之前關閉它,它不爲空,它仍然給我一個seg故障..
我跑過GDB,一旦fclose(fp)執行,它seg故障。
這是怎麼回事?
這裏是我的代碼:
char *mode = "r";
int numsToRead = 0;
FILE *fp = fopen(inputFile, mode);
if (fp == NULL){
fprintf(stderr, "Can't open input file!\n");
exit(1);
}
int *temp;
int index = 0;
// Get number of integers (first integer)
fscanf(fp, "%d", &numsToRead);
fprintf(stdout, "nums to read: %d\n", numsToRead);
integers = (int*)malloc(sizeof(int) * numsToRead);
for(int i = 0; i <= numsToRead; i++){
int currInt;
if(fscanf(fp, "%d", &currInt) == 1)
integers[i] = currInt;
else
break;
}
if(fp != NULL)
fclose(fp);
'我<= numsToRead'應該是'I
dasblinkenlight
2015-02-11 02:24:23
你的「整數」聲明在哪裏?沒有聲明,它會默認爲'int',而不是'int *'。 – 2015-02-11 02:24:43
不要施放'malloc'的結果! – 2015-02-11 02:28:33