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);

4

1 回答 1

1
  1. 使用 malloc() 为您的文本行设置一个初始缓冲区。比如说,16 个字符。

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

  3. 当缓冲区快满时, realloc() 它并将其扩展为 16 个更多字符。如果 realloc 成功,请转到步骤 2。

于 2020-05-17T18:11:17.750 回答