我想读取一个整数文件,其中包含文件中整数的数量作为第一个整数,但是当我在读取文件后尝试关闭文件时,出现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