我想象逐字节读取效率非常低,但是读取数量几乎总是读取超过需要的数量,需要将全部读取输入的其余部分存储在全局上下文中后续的读操作来查找。我错过了什么?
答案 0 :(得分:3)
原型是:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
所以它显然使用已经缓冲的FILE
。因此,逐字逐句阅读并不是效率低下的。
答案 1 :(得分:2)
这就是缓冲io 的用途。简而言之,C库读取一个完整的缓冲区,其大小取决于实现,但相当大,然后getline
函数查找该内存缓冲区中的第一个换行符,使指针位于下一个访问位置。