Функция 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);
}
1. Вам необходимо проверить возвращаемое значение 'fopen', чтобы убедиться, что оно выполнено успешно. 2. После цикла 'fgetc' поток находится в конце файла. Вам нужно ['rewind'] (http://linux.die.net/man/3/rewind) вернуться к началу файла. 3. Вам нужно «NUL» завершить данные, которые были прочитаны, поскольку «fread» вряд ли приведет к созданию строки. – kaylum
Реферат: прочитайте документацию о функциях, которые вы вызываете, и полюбуйтесь кодами возврата, которые они предоставляют, чтобы вы не попали в яму нарушения [6-я заповедь Генри Спенсера для программистов C] (https://www.seebs.net/ с/10com.html). – WhozCraig
Еще один приятный пример, почему проверка ошибок очень важна. Смотрите: Если код ничего не хранит, возможно, он не читал. Итак, первое, что нужно сделать, это RTFM на 'fread()', пытаясь выяснить, каким образом этот вызов может потерпеть неудачу, и если это произойдет, как он будет передавать это обратно вызывающему. – alk