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;
}


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值