文件操作《9》输入错误处理

在分析算法前先看几个函数


函数名:feeror

函数功能:检测文件在用各种输入输出函数进行读写时是否出错

函数原型:: int ferror(FILE *stream);

参数:文件指针


函数名:clearerr

函数功能:清除错误

函数原型:void clearerr(FILE *stream);

参数:文件指针


函数名:fflush

函数功能:清除文件缓冲区

函数原型:int fflush(FILE *stream)

参数:文件指针


函数名:rewind

函数功能:使文件指针移动到文件的开始位置

函数原型:void  rewind(FILE *stream)

参数:文件指针



算法分析:

得到一个从键盘上输入的数据——检查数据是否错误——当数据是整数时——输出数据——当数据不是整数或者数据不是从键盘中输入的时——数据错误——清除错误——清除文件缓冲区——重新输入,直到输入正确为止


程序代码:

#include <stdio.h>
#include <stdlib.h>

void main()
{
	int i,s;

	printf("Please input an integer:");

	//stdin表示从键盘中输入数据
	s = fscanf(stdin,"%d",&i);

	while(ferror(stdin) || !s)//当输入错误时
	{
		clearerr(stdin);//清除错误信息

		fflush(stdin);//清除文件缓冲区

		printf("Input data error! Redo to input an integer:");


		s = fscanf(stdin,"%d",&i);//重新输入
	}

	printf("Resout=%d\n",i);//打印输入的数据

	system("pause");
}

该程序检测输入的数据是否为整数,若不是,则重新输入


执行程序:

当输入123时(输出了输入的数据)


当输入1.23时(程序将1.23自动转换成整型,所以输出1)


当输入abc时,程序会进行错误检查并且要求重新输入


重新输入正确的数据后



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值