Получение ошибки сегмента при чтении данных из текстового файла на C - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь взять информацию из текстового файла и прочитать ее, в основном я получаю длину файла в байтах, а также имя файла, чтобы убедиться, что он существует, и передаю егоЭтот способ.

У меня есть некоторый тестовый код, чтобы увидеть, где проблема, но я не могу понять, откуда происходит ошибка сегмента, возвращаемое значение fgetc соответствует значению, в котором он хранится, и это единственное, что я могуможно придумать.

uint32 getCode(char *fileA, int count){
   //creating variables to store the data we are reading in
   int buffer = 0;
   register uint64 total = 0;

   //opening with rb ensures that all file types will be readable
   FILE *file;
   if(file= fopen(fileA, "rb")){
      printf("\nfilename: %s\ncount: %d\n",fileA,count);
   }
   // while loop reading in 32 bits at a time or 4 bytes
   while(count > 0){
      buffer = fgetc(file);
      count--;
      printf("\n%s", buffer);
   }

   fclose(file);
   return 1;
}

1 Ответ

0 голосов
/ 08 октября 2019

Ошибка сегментации происходит от printf("\n%s", buffer); - ваш buffer не является строкой, и вы можете получить намного лучшие результаты при печати в формате '%c'

И да, комментарий // while loop reading in 32 bits at a time or 4 bytesнемного вводит в заблуждение, так как вы читаете 1 байт за раз.

...