#include <stdio.h>
#include <iostream>
using namespace std
void main()
{
int i = -1
cin >>i
while (i == -1)
{
cout <<"Wrong!" <<endl
cin.clear() // 清除cin的标志位,在发生输入错误时,它会被改变
cin.sync() // 将你已经输入到cin中的数据清除掉
cin >>i
}
}
scanf("%c",&a)读入字符时,'\n'被留在输入缓冲区,下次再读入a时,会将这个'\n'读入,这个'\n'既不是'y'或'Y',也不是'n'或'N',这就是执行两次
else {flag = 0
printf("您的输入有误!请重新输入!\n")
}
的原因。
既然你提到了健壮性,我建议你将键盘回答的内容读到足够长的char数组中,如char a[15],用系统函数fgets(a,15,stdin)读入a,紧跟着一句fflush(stdin)然后根据第一个字符,进行处理即可。
这个不是具体的技术,大概就是让程序在数据出错时不会崩坏,告诉用户数据出错了。比如在输入用户生日时,如果用户输入了13月32日,那么程序要通知用户“请输入正确的生日”,这个就是容错处理。如果不做这个处理的话,程序可能因为月份是13月而直接卡死 或者 真的把生日填成了13月。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)