我有一个包含以下代码的程序:
#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' 作为第一个输入。对于 ab 和 r,do 循环下的代码重复。所以对于上面的例子,我得到:
Choose a numeric value
>Choose a numeric value>
Choose a numeric value
>3
有什么办法可以阻止这个???我尝试使用 \n%c 扫描字符并考虑空格,但这没有用:(
请帮忙
非常感谢 !