【问题标题】:how does getline read only up to a newline without seeking?getline 如何在不查找的情况下只读取换行符?
【发布时间】:2017-11-22 13:23:38
【问题描述】:

我在想象逐字节读取会非常低效,但是批量读取几乎总是会读取超出需要的内容,需要将其余读取输入存储在全局上下文中以供所有人使用后续的读操作来查找。我错过了什么?

【问题讨论】:

    标签: c linux getline


    【解决方案1】:

    原型是:

    ssize_t getline(char **lineptr, size_t *n, FILE *stream);
    

    所以它显然使用了FILE,它已经被缓冲了。所以逐个字符读取一点也不低效。

    【讨论】:

    • 所以是FILE 保留了上下文。谢谢。
    【解决方案2】:

    这就是 缓冲 io 的用途。长话短说,C 库读取一个完整的缓冲区,其大小取决于实现,但相当大,然后getline 函数在该内存缓冲区中查找第一个换行符,将指针定位为下一次访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2016-07-25
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多