2015-02-11 4 views
0

Я пытаюсь прочитать файл целых чисел, который содержит число целых чисел в файле как первое целое число, но когда я пытаюсь закрыть файл после его чтения, я получаю ошибку 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); 
+0

'я <= numsToRead' должен быть' я dasblinkenlight

+0

Где ваше объявление целых чисел? Без объявления он будет по умолчанию 'int', а не' int * '. –

+1

Не набрасывайте результат 'malloc'! –

ответ

1
for(int i = 0; i <= numsToRead; i++) 
//    ^^ 

должен быть

for(int i = 0; i < numsToRead; i++) 
//    ^
+1

@JayB, Показать объявление этого и содержимое текстового файла. –

+0

@CoolGuy Nevermind, другая ошибка в моем коде. – JayB