c语言如何限制非法输入

2024-12-17 02:35:47
推荐回答(3个)
回答1:

  1. c语言中大部分自带的方法都有返回值,像scanf方法如果输入正确的话,它会返回一个正整数,所以你可以通过它来判断,如果输入不正确的话它返回是0,你就可以通过这个判断是否为非法输入。

  2. scanf()函数有返回值且为int型。
    scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
    scanf("%d%d", &a, &b);
    如果a和b都被成功读入,那么scanf的返回值就是2
    如果只有a被成功读入,返回值为1
    如果a和b都未被成功读入,返回值为0
    如果遇到错误或遇到end of file,返回值为EOF。

回答2:

风轻的做法不太完全,在输入11a22时,会将a之后的舍弃而认为是正确的整形11.

fun()
{
char ch[11];

int i = 0;
int input = 0;

ch[i] = (char)getchar();

while( ch[i] != '\n')
{

if(ch[i]>'9'||ch[i]<'0')
{
printf("error!");
fflush(stdin);
return 1; /* error */
}

ch[++i] = (char)getchar();
}

sscanf(ch, "%d", &input);
printf("%d",input);

fflush(stdin);
return input;
}
11a11 error!
1111 1111 返回1111

回答3:

int n;
while(scanf("%d",&n)==0)
{
printf("输入错误,请重新输入:");
fflush(stdin);
}