Я пытаюсь прочитать файл целых чисел, который содержит число целых чисел в файле как первое целое число, но когда я пытаюсь закрыть файл после его чтения, я получаю ошибку seg.Seg fault on fclose?
Я читал, что если указатель файла имеет значение NULL, и вы пытаетесь его закрыть, это приведет к сбою. Тем не менее, я проверяю, не имеет ли значение null до его закрытия, это не является нулевым, и это все равно дает мне ошибку seg.
Я провел его через GDB, и как только fclose (fp) выполнит его, он будет неисправен.
Что происходит?
Вот мой код:
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' должен быть' я
dasblinkenlight
Где ваше объявление целых чисел? Без объявления он будет по умолчанию 'int', а не' int * '. –
Не набрасывайте результат 'malloc'! –