POSIX getline()-EOF上的行缓冲区状态?

Mr.*_*ama 3 c posix getline

这个问题是关于POSIX C功能的getline

文档指出,如果getline发生错误(包括EOF),则返回-1,但没有说明在这种情况下会发生什么lineptrn在这种情况下会发生什么。
我了解某些错误可能会以不同的方式处理-例如失败realloc-但是EOF呢?是否lineptr并且n仍然保留其原始值?具体实施吗?未定义的行为?

Sta*_*eur 5

如果getline返回错误(EOF是此函数中的错误)。不应使用缓冲区中的数据。

EOF 如果函数读取至少1个字节,则不得返回该值,请注意,在某些情况下该函数可以返回0。

此外,手册中明确指出:

即使getline()失败,该缓冲区也应由用户程序释放。


无论哪种情况,在成功调用后,* lineptr和* n都会更新以分别反映缓冲区地址和分配的大小。

这句话可以解释为缓冲区仅在成功调用后才更新。


我认为该程序应记录此错误,并继续读取已经读取的数据。注意:feof()用于了解流是否已到达末尾。