c语言函数ferror和clearerr的具体实例用处

Python013

c语言函数ferror和clearerr的具体实例用处,第1张

ferror是检查是否出现错误

如果出现错误,那么其他文件读写操作是无法进行的。

而clearerr就是清除这个错误标记,继续读写。

这个只是读写文件用的,和执行函数没多大关系。

比如,读到EOF,这时会有一个最常见的错误标记,导致无法读写。 clearerr后,可以继续读写,比如重新定位到文件其他位置读数据等等。但不能在EOF位置继续读,否则会马上产生一个新的ferror

c语言标准库函数里没有error函数。C语言对异常的处理确实不够好,大多的时候都需要人工除错。

有几个类似的函数,分别处理各种情况下的异常:

ferror函数:在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。 它的一般调用形式为 ferror(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件 每一次调用输入输出函数,均产生一个新的ferror函 数值,因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。

perror函数: 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。

strerror函数:用来 从错误号码 查 用英文表达的错误内容,返回指针,指向这段英文字符串。如果你不知道错误号,那么在出错发生时,及时用 errno 的当前值 作参数,打印这段字符串。

哥们,给你参看以下:

函数名: ferror

功 能: 在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。 它的一般调用形式为 ferror(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件 每一次调用输入输出函数,均产生一个新的ferror函 数值,因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。 用 法: int ferror(FILE *stream)程序例: #include <stdio.h>int main(void) { FILE *stream/* open a file for writing */ stream = fopen("DUMMY.FIL", "w")/* force an error condition by attempting to read */ (void) getc(stream)if (ferror(stream)) /* test for an error on the stream */ { /* display an error message */ printf("Error reading from DUMMY.FIL\n")/* reset the error and EOF indicators */ clearerr(stream)} fclose(stream)return 0}