在C中,有没有一种方法可以逐行读取文本文件而不知道要为它分配多少空间?
这是我的意思的一个例子:
fgets(line, <dynamic line size>, fileHandle);
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
没什么自动的.您需要继续增加缓冲区并调用fgets,直到获得换行符或EOF.
// NOTE: not production ready as does not handle memory allocation failures
size_t alloced = 128;
char *p = malloc(alloced);
char *walk = p;
size_t to_read = alloced;
for (;;) {
if (fgets(walk, to_read, fp) == NULL)
break;
if (walk[strlen(walk) - 1] == '\n')
break;
to_read = alloced;
alloced *= 2;
p = realloc(p, allocated);
walk = p + to_read;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6192 次 |
| 最近记录: |