[英]C : while( scanf("%d",&num) != 1 ) infinite loop
希望你能帮我解决这个问题我必须使用scanf
来读取和验证输入......我已经尝试过这段代码:
int num = 0;
while( scanf("%d",&num) != 1 || num < 3 || num > 9){
printf("Enter new num: ");
}
当我输入数字时效果很好但是当我输入任何其他字符时它会进入无限循环而不是要求新的输入...
Enter new num: Enter new num: Enter new num: Enter new num:
Enter new num: Enter new num: Enter new num: Enter new num:
Enter new num: Enter new num: Enter new num: Enter new num:
有任何想法吗?
谢谢
您需要从输入缓冲区中删除无效数据。 例如
int num = 0;
while( scanf("%d",&num) != 1 || num < 3 || num > 9){
scanf( "%*[^\n]%*c" );
printf("Enter new num: ");
}
这是一个演示程序。
#include <stdio.h>
int main( void )
{
int num = 0;
printf("Enter new num: ");
while( scanf("%d",&num) != 1 || num < 3 || num > 9){
scanf( "%*[^\n]%*c" );
printf("Enter new num: ");
}
printf("num = %d\n", num );
}
程序 output 可能看起来像
Enter new num: 1
Enter new num: A
Enter new num: 10
Enter new num: 5
num = 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.