试图验证整数,但是当输入错误的值类型时,出现第一个printf的无限循环。
int main(int argc, char *argv[]) {
int input;
do{
int starCount;
printf("Please enter a number:");
scanf("%d",input);
do{
scanf("%d",&input);
}while(isdigit(input));
for(starCount=0; starCount<input; starCount++){
printf("*");
}
printf("\n");
}while(input>0);
return 0;
}
最佳答案
您的逻辑错误有两个原因:
您在input
的末尾检查了do..while
,但先前在for
循环中使用了它。
绝对不需要使用双do..while
循环。
您的初始scanf
也存在另一个错误:
scanf("%d", input); // <-- should be `&input`
对于您所需要的,一个
do..while
就足够了: int input;
do{
int starCount;
printf("Please enter a number:");
if( 1 != scanf("%d",&input) || input < 0 ) // <-- check return value of scanf and valid `input`
{
break;
}
for(starCount=0; starCount<input; starCount++){
printf("*");
}
printf("\n");
}while(1);
注意,您可以/应该使用
scanf
的返回值,并在input
循环之前检查for
是否有效。关于c - C尝试验证整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41602532/