我不想做的是检查我的输入是否是数字然后继续,否则打印出错误的格式并要求新的输入。我得到的是无限循环打印“格式错误”
这是我输入数字的函数:
void input_number(int *number)
{
printf("Number: ");
if ( scanf("%d", number) == 1 )
return 0;
else
{
printf("-> Wrong format, try again! <-\n");
input_number(number); // start over
}
}
当我运行程序时,我希望它看起来像这样:
号码:你好
-> 格式错误,请重试! <-
数量:4
然后继续......
最佳答案
试试这个:(注意有很多更好的方法可以做到这一点)
void input_number(int *number)
{
int flag=1;
printf("Number: ");
while(flag==1){
if ( scanf("%d", &number) == 1 ){ // also you were missing & specifier
flag = 0;
//return 0;
}else{
printf("-> Wrong format, try again! <-\n");
getchar(); // to catch the enter from the input -- make sure you include stdlib.h
}
}
return 0;
}
输出:
Number: f
-> Wrong format, try again! <-
Number: f
-> Wrong format, try again! <-
Number: d
-> Wrong format, try again! <-
Number: d
-> Wrong format, try again! <-
Number: s
-> Wrong format, try again! <-
Number: s
-> Wrong format, try again! <-
Number: s
-> Wrong format, try again! <-
Number: s
-> Wrong format, try again! <-
Number: 6
关于C 编程 - 重复 scanf 直到仅输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259612/