如何使用fread函数从文件中下载一行不受限制的文字?

问题描述 投票:1回答:1

我有一个问题,如何从文件中下载一行文本,而不指定这行的大小?我不想用fgets,因为你必须提前给字符fgets。 我可以加载整个文件,但不能加载一行。

FILE *f
 long lSize;
 char *buffer;
 size_t result;

f = fopen("file.txt", "r");

 fseek(f, 0, SEEK_END);
 lSize = ftell(f);
 rewind (f);

 buffer = (char*)malloc(sizeof(char)*lSize);

 result = fread(buffer,1,lSize, f);

fclose(f);
free(buffer);

c fread ansi line-by-line gcc-pedantic
1个回答
1
投票
  1. 使用 malloc() 为你的文本行设置一个初始缓冲区。比如说,16个字符。

  2. 在文件上循环并使用 fgetc() 每次检索一个字符。将其存储到缓冲区的适当位置。如果它是一个换行符,在缓冲区里放一个NUL字符,然后退出循环。

  3. 当缓冲区快要满的时候,重新分配()它,然后再扩展16个字符。如果重新分配成功,进入步骤2。

© www.soinside.com 2019 - 2024. All rights reserved.