这个问题涉及到 POSIX C 函数
文档说明说,
我明白有些错误可能会有不同的处理方式 - 比如
getline
。文档说明说,
getline
在出错时(包括 EOF)返回 -1,但它没有说明在这些情况下 lineptr
或 n
会发生什么。我明白有些错误可能会有不同的处理方式 - 比如
realloc
失败了 - 但是 EOF 呢? lineptr
和 n
是否仍保留原始值? 这是实现特定的吗? 是未定义的行为吗?
getline
失败时应该释放缓冲区,但这仍然无法说明缓冲区在失败时的内容状态。无论如何,在返回-1
后访问缓冲区似乎都没有定义良好,所以最好不要依赖它。 - Mr. LlamaEOF
的原因。当getline()
没有错误返回时,为什么要保留已经解析的缓冲区数据呢?经过思考,这看起来像是一个XY问题。 - Stargateurgetline
返回 -1 表示 EOF,我不能保证我的行缓冲区仍然有效以供打印。目前,我通过使用两个行缓冲区来解决这个问题。 - Mr. Llama