C语言 只能输入数字,输入其他就提示输入错误,请重新输入怎么弄?

如题所述

//当scanf接收到不匹配的输入时会返回0
#include<stdio.h>
void main()
{
int n=0;
while(n!=99999)
{
if((scanf("%d",&n)==0))
{
printf("错误!!请重新输入\n");
fflush(stdin);
continue;
}
else
printf("OK!!!\n");
}
}

运行结果:

1234
OK!!!
abcd
错误!!请重新输入
a
错误!!请重新输入
12345678
OK!!!
aaa
错误!!请重新输入
99999
OK!!!
请按任意键继续. . .
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-10
不知道你指的是输入一个数字或字符还是一串
下面是输入一个数字或字符的
#include<stdio.h>
int main()
{
char c,c1;
while(1)
{
c=getchar();
c1=getchar(); //你打一个非数字时要按回车,回车本身也是一个字符,
用c1接收回车,以免打一个字符输出两个error
if(c>='0'&&c<='9')
break;
printf("error!\n");
}
}追问

我输入两位数或三位数呢?

追答

这个程序最大可以输入100位,因为c数组为100位。只要有一个字符不是数字,就报错。
#include
int main()
{
char c[100];
int t,i;
while(1)
{
t=0;
gets(c);
for(i=0;c[i]!='\0';i++)
{
if(!(c[i]>='0'&&c[i]<='9'))
{
t=1;
break;
}
}
if(t==1)
printf("error!\n");
else
break;
}
}

本回答被提问者和网友采纳
第2个回答  2012-04-22
#include <stdio.h> void main() {int i; char m; for (i=0;i>=0;i++) {printf("shu<0-9>;\n"); scanf("%c",&m); if(m>='0'&&m<='9') {printf("%d",(int)m); brack;} else printf("cuo Wu"); } system ("PAUSE"); }追问

那我要是输入12呢?

相似回答