Mr.*_*ama 3 c posix getline
这个问题是关于POSIX C功能的getline。
getline
文档指出,如果getline发生错误(包括EOF),则返回-1,但没有说明在这种情况下会发生什么lineptr或n在这种情况下会发生什么。 我了解某些错误可能会以不同的方式处理-例如失败realloc-但是EOF呢?是否lineptr并且n仍然保留其原始值?具体实施吗?未定义的行为?
lineptr
n
realloc
Sta*_*eur 5
如果getline返回错误(EOF是此函数中的错误)。不应使用缓冲区中的数据。
EOF 如果函数读取至少1个字节,则不得返回该值,请注意,在某些情况下该函数可以返回0。
EOF
此外,手册中明确指出:
即使getline()失败,该缓冲区也应由用户程序释放。
无论哪种情况,在成功调用后,* lineptr和* n都会更新以分别反映缓冲区地址和分配的大小。
这句话可以解释为缓冲区仅在成功调用后才更新。
我认为该程序应记录此错误,并继续读取已经读取的数据。注意:feof()用于了解流是否已到达末尾。
feof()
归档时间:
8 年,11 月 前
查看次数:
959 次
最近记录:
8 年 前