Функция fread не сохраняется в буфере

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

Как решить эту проблему?

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
   FILE* ptr1 = fopen("try.txt","r");
   int count = 0;
   while(fgetc(ptr1) != EOF)
   {
       count++;
   }
   char* buffer = malloc(sizeof(char)*count);
   fread(buffer,sizeof(char),count, ptr1);
   printf("%s",buffer);
   fclose(ptr1);
   free(buffer);
}

2 ответа

Когда вы подсчитываете символы в файле, вы перемещаете указатель fpos в EOF. Затем вы пытаетесь прочитать подсчитанное количество символов, что невозможно без перемотки в начало файла. Вы должны использовать перемотку.

Используйте функцию rewind() после fgetc(), которая устанавливает позицию файла в начало файла данного потока. Подобно,

rewind(ptr1);
Другие вопросы по тегам