Функция 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);