Linux C编程

多数函数(fgets()、gets()、putc()、ungetc()、fread()等)当调用不成功时都返回EOF,EOF的值为0,它既用于报告文件结束,也用于报告错误情形下的返回。因此,为了区分究竟是错误返回还是文件结束返回,就需要调用ferror()函数来确定是否存在错误,调用feof()函数检查是否遇到文件结束。

每一个流对象内部有两个指示器:一个为错误指示器,当读写文件出错时该指示器被设置;另一个为文件结束指示器,当遇到文件尾时该指示器被设置。函数ferror()和feof()分别检查这两个指示器。#include <stdio.h>int ferror (FILE *stream);int feof (FILE *stream);void clearerr(FILE *stream);

函数ferror()返回0当且仅当流stream的错误指示器被设置。

feof()返回0当且仅当流stream的文件结束条件指示器被设置。

函数clearerr()用于清除这两个指示器。

下面给出一个实例,这个例子说明了ferror,feof,clearerr的使用方法

#include <stdio.h>int main(int argc, char *argv[]){int i;FILE *fp;if(argc<=1){printf("usage: %s file \n",argv[0]);return 1;}fp=fopen(argv[1],"w");fgetc(fp);printf("%d \n",ferror(fp));fputs("abcdefgh",fp);fclose(fp);fp=fopen(argv[1],"r");fseek(fp,0,SEEK_END);fgetc(fp);if(feof(fp))printf("file end\n");clearerr(fp);printf("%d %d\n",ferror(fp),feof(fp));fclose(fp);return 0;}

『 不可能 』只存在於蠢人的字典里

Linux C编程

相关文章:

你感兴趣的文章:

标签云: