在分析算法前先看几个函数
函数名: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时,程序会进行错误检查并且要求重新输入
重新输入正确的数据后