深入探索I/O操作:从标准I/O到高级文件I/O
1. 标准I/O的错误处理与文件描述符获取
在标准I/O操作中,错误和文件结束(EOF)的检查是很重要的环节。我们可以使用 ferror() 和 feof() 函数分别检查流是否发生错误和是否到达文件末尾。而 clearerr() 函数用于清除流的错误和EOF指示器,但要注意,必须在检查完这些指示器之后再调用它,因为调用后这些指示器会被不可恢复地丢弃。示例代码如下:
/* 'f' is a valid stream */
if (ferror (f))
printf ("Error on f!\n");
if (feof (f))
printf ("EOF on f!\n");
clearerr (f);
有时候,我们需要获取与流关联的文件描述符,这时可以使用 fileno() 函数。其原型为:
#include <stdio.h>
int fileno (FILE *stream);
当成功时, fileno() 返回与流关联的文件描述符;失败时返回 -1,并且会将 errno 设置为 EBADF ,表示给定的流无效。不过,通常不建议将标准I/O调用与系统调用混合使用。在使用 fileno()
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



