c语言问题。输入数据要符合要求,不符合提示错误并重性输入

比如要求只能输入0、1、2,其他输入无效,并提示错误,重新输入,这代码怎么写?

第1个回答  2013-03-02
/*
092134179x:输入错误,继续输入,'#'结束
21344009764x:输入错误,继续输入,'#'结束
09213417921344009764
Press any key to continue
*/
#include <stdio.h>
#include <conio.h>
int main()
{ char ch = 0,s[36];
int i = 0;
while(1) {
ch = getch();
if(ch >= '0' && ch <= '9' && i < 35) {
s[i++] = ch;
putchar(ch);
}
else if(ch == '#') {
s[i++] = '\0';
break;
}
else {
printf("x:输入错误,继续输入,'#'结束\n");
continue;
}
}
printf("%s\n",s);
return 0;
}
第2个回答  2013-03-02
#include<stdio.h>
main()
{
int a;
printf("input an integer:\n");
scanf("%d",&a);
for(;a!=0&&a!=1&&a!=2;)
{ printf("input error,repeat:\n");
scanf("%d",&a);
}
printf("\ninput correct");
}
第3个回答  2013-03-02
int a;printf("input a num:");
while(scanf("%d",&a)!=1||a!=0&&a!=1&&a!=2)
{printf("error,input again:");
while(getchar()!='\n');}追问

while(getchar()!='\n')什么意思?

追答

如果输入的东西不是int型的话,a无法得到,东西留在输入缓冲带,用while(getchar()!='\n')读掉这些东西,不然会留在缓冲带,再要输入时就会受到阻碍

追问

是输入缓冲区的换行符的作用吧,这部可以用清除缓冲区的函数fflush(stsin)吗?

追答

http://wenku.baidu.com/view/79f5d6fa04a1b0717fd5dd1b.html
给你篇文章看看。。当然也可以用那个函数啦,方法有很多,目的达到了就行了

相似回答