文件操作《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时(输出了输入的数据)

文件操作《9》输入错误处理_第1张图片


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

文件操作《9》输入错误处理_第2张图片


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

文件操作《9》输入错误处理_第3张图片


重新输入正确的数据后

文件操作《9》输入错误处理_第4张图片




你可能感兴趣的:(文件操作《9》输入错误处理)