【发布时间】:2017-11-22 13:23:38
【问题描述】:
我在想象逐字节读取会非常低效,但是批量读取几乎总是会读取超出需要的内容,需要将其余读取输入存储在全局上下文中以供所有人使用后续的读操作来查找。我错过了什么?
【问题讨论】:
我在想象逐字节读取会非常低效,但是批量读取几乎总是会读取超出需要的内容,需要将其余读取输入存储在全局上下文中以供所有人使用后续的读操作来查找。我错过了什么?
【问题讨论】:
原型是:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
所以它显然使用了FILE,它已经被缓冲了。所以逐个字符读取一点也不低效。
【讨论】:
FILE 保留了上下文。谢谢。
这就是 缓冲 io 的用途。长话短说,C 库读取一个完整的缓冲区,其大小取决于实现,但相当大,然后getline 函数在该内存缓冲区中查找第一个换行符,将指针定位为下一次访问。
【讨论】: