检查用户输入的值

时间:2016-05-01 11:36:00

标签: c

使用此代码,我试图检查用户是否正确给出了我的值。当我给出整数值时,程序完美地运行并且"done "被打印在屏幕上但是当我给出诸如"a"之类的字符时,它进入无限循环并且不再输入值...

#include<stdio.h>
#include<stdlib.h>
int main()
{   
    int i;
    printf("Enter an integer: ");
    while(!scanf("%d",&i))
    {
        printf("no ");
    }
   printf("done\n");
   return 0;
}

输出1:

Enter an integer: 5
done

输出2:

Enter an integet: a
no no no no no no no no no no no no....upto infinite times

1 个答案:

答案 0 :(得分:2)

无法使用的内容留在流上,因此您必须在尝试再次阅读之前使用它。

#include<stdio.h>
#include<stdlib.h>
int main(void)
{   
    int i;
    printf("Enter an integer: ");
    while(!scanf("%d",&i))
    {
        scanf("%*s"); /* add this line to consume the garbage on the stream */
        printf("no ");
    }
   printf("done\n");
   return 0;
}