曲径通幽论坛

标题: 流错误(stream error) [打印本页]

作者: beyes    时间: 2009-2-12 01:37
标题: 流错误(stream error)
指示一个错误,许多 stdio 库函数返回超出范围(out-of-range)值,像 null指针或者常数 EOF。在这种情况下,错误是由外部变量 errno来指示:
#include <errno.h>
extern int errno;

注意:许多函数可能改变 errno 这个值。这个值也仅在函数失败时有效。你应该在一个函数指示失败后立即对它进行检查。你在使用它之前,应该将它拷贝到另一个变量中去,因为打印函数,如 fprintf ,可能它们自己都会改变 errno 。

相关函数
#include <stdio.h>
int ferror(FILE *stream);
int feof(FILE *stream);
void clearerr(FILE *stream);

ferror 函数测试错误指示符,如果错误指示符被设置,则返回非零值,否则返回 0 。

feof 函数测试 end-of-file (文件结束 EOF)指示符,如果被设置,就返回非零值,否则返回 0 。如下:
if( feof(some_stream) )  
  /*已经在文件末尾*/

clearerr 函数清除其参数 stream 指向流的 EOF 和错误指示符。此函数没有返回之和不定位错误指示。可以使用它从流错误中恢复过来。例如在一个“磁盘已满”的错误被解决后可以重新向流进行写。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2