一个C语言程序中的容错功能的问题

一个C语言程序中的容错功能的问题,第1张

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)然后根据第一个字符,进行处理即可。

用字符串接收输入的值,然后一个瞎戚字符一个字符的判断是否是"1"-"9"或者是"."(单价之类的可以是小数),还有就是判断第一个字符是否是数字,最多只能有一个"."之类的都可以用这个办法

bool IsNumber(char cNumber[200])

{

char achar

int nIndex

int nPCount

nIndex = 0

achar = cNumber[nIndex]

nPCount = 0

while (achar != 0)

{

//不考虑有负数

if (achar<'0' || achar>'9')

{

if (achar != '.')

{

return false

}

else

{

nPCount++

if (nPCount >1)

{

return false

}

}

}

nIndex++

achar = cNumber[nIndex]

}

return true

}

void main()

{

char cNumber[200]

double dValue

printf("输入一个数字:")

scanf("%s",&cNumber)

while (!IsNumber(cNumber))

{

printf("非法数字,请重梁并新橡神迹输入:")

scanf("%s",&cNumber)

}

dValue = atof(cNumber)

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存