当我想检查我输入的是数字时,我遇到了这个问题。scanf
如果我成功输入数字,该函数将返回 1。所以这是我写的:
int argu;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
}
但是当我输入类似abcd
的东西时,循环会永远持续下去并且不会停止提示。
我在网上查了一下,发现它与缓存有关,我需要清理它以便scanf
获取新数据。所以我尝试fflush
了,但没有奏效。
然后我看到了这个:
int argu,j;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
while((j=getchar())!='\n' && j != '\n');
}
然后,当我输入“abcd”之类的内容时,它运行良好,并提示我输入。但是当我输入像'12ab'这样的东西时,它就不能再工作了。
那么有没有一种方法可以检查输入scanf("%d", &argu)
实际上是一个数字,如果不是,则提示输入另一个输入?
编辑:
我看到了答案并通过使用解决了我的问题while(*eptr != '\n')
。
请注意,该fgets
函数实际上将 '\n' 读入数组而gets
没有。所以要小心。