c++ 容错程序

c++ 容错程序,第1张

如果你使用cin。他会自动帮你进行筛选。如果你输入一个字母,就会产生不可预料的后果。一般的做法是,在使用cin前,将data[i]进行初始化,比如说-1,然后检测,运行完cin之后,data[i]是否有所改变。范例程序如下。

#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月。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8040848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存