【发布时间】:2010-05-09 03:01:43
【问题描述】:
我有一个程序有这个代码:
#include<stdio.h>
main(){
int input;
char g;
do{
printf("Choose a numeric value");
printf(">");
scanf("\n%c",&input);
g=input-'0';
}while((g>=-16 && g<=-1)||(g>=10 && g<=42)||(g>=43 && g<=79));
}
它基本上使用 ASCII 操作来允许程序仅接受数字 .. '0' 默认值为 48...ASCII 值 - 48 给出了上述数字范围(在 while 语句中)
无论如何,只要用户输入数字和字母,例如:
abr39293afakvmienb23
程序忽略:a,b,r .. 但将 '3' 作为第一个输入。 对于 a b 和 r,do 循环下的代码重复。所以对于上面的例子,我得到:
Choose a numeric value
>Choose a numeric value>
Choose a numeric value
>3
有什么办法可以阻止这个吗???我尝试使用 \n%c 来扫描字符并考虑空格,但这不起作用:(
请帮忙
非常感谢!
【问题讨论】:
-
这与SO 2795252和SO 2796108的问题非常相似。