程序不等待来自scanf的输入
如果我输入一个数字,一切正常。 但当我输入一封信时,它会不断发出“输入一个数字”的垃圾邮件。 它不会再次请求输入。我如何解决这个问题程序不等待来自scanf的输入,c,stdio,C,Stdio,如果我输入一个数字,一切正常。 但当我输入一封信时,它会不断发出“输入一个数字”的垃圾邮件。 它不会再次请求输入。我如何解决这个问题 #include <stdio.h> int main() { int number = 0; int status = 0; do{ printf("enter a number\n"); status = scanf("%d", &number); } while (st
#include <stdio.h>
int main() {
int number = 0;
int status = 0;
do{
printf("enter a number\n");
status = scanf("%d", &number);
} while (status != 1);
printf("you chose number %d", number);
return 0;
}
#包括
int main(){
整数=0;
int status=0;
做{
printf(“输入数字”);
状态=扫描频率(“%d”和编号);
}而(状态!=1);
printf(“您选择了编号%d”,编号);
返回0;
}
@antoh我不认为这是一个重复:几乎是相反的问题。在这里,输入被一个字母阻塞,直到你找到清除输入的方法,这个字母才会消失。绕过它的一个简单方法是使用fgets
读取输入,并对该字符串应用sscanf
。如果扫描失败,您只需输入另一个字符串。此问题存在许多重复项。当您输入字母并且scanf()
需要一个数字时,字母将保留在输入流中。您必须清除输入流。不要像一些人建议的那样使用fflush(stdin)
;标准明确指出,这会导致未定义的行为,尽管一些实现(尤其是MS)定义了这种行为。