fread函数不存储到缓冲区中

时间:2016-05-31 03:34:39

标签: c file-io buffer file-handling

我使用的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 个答案:

答案 0 :(得分:0)

fgetc()之后使用快退()功能,该功能将文件位置设置为给定流文件的开头。像,

rewind(ptr1);

答案 1 :(得分:0)

当你计算文件中的字符时,你正在将fpos指针移动到EOF。 然后,您正在尝试读取计算的字符数,如果没有倒回到文件的开头是不可能的。 你必须使用倒带。