C 如何";“复兴”;输入错误类型后的标准输入
如果用户只输入整数,下面的代码与预期的一样工作C 如何";“复兴”;输入错误类型后的标准输入,c,exception,stdin,C,Exception,Stdin,如果用户只输入整数,下面的代码与预期的一样工作 #include <stdio.h> int main() { int input1, input2; int error; error = scanf("%d", &input1); if( !error) printf("Error: Your input was wrong\n"); else printf("Your input was: %d\
#include <stdio.h>
int main()
{
int input1, input2;
int error;
error = scanf("%d", &input1);
if( !error)
printf("Error: Your input was wrong\n");
else
printf("Your input was: %d\n", input1);
error = scanf("%d", &input2);
if( !error)
printf("Error: Your input was wrong");
else
printf("Your input was: %d\n", input2);
}
跳过第二个scanf()
一旦输入失败,我如何“恢复”
stdin
,以便可以重用它?这个方法有效。你能给我解释一下它是如何工作的以及它是在哪里被记录的吗?@Machtl“%*[^n]”
它将使用新行的输入。第二次扫描导致相同的故障,因为输入剩余。这一次有效。你能给我解释一下它是如何工作的以及它是在哪里被记录的吗?@Machtl“%*[^n]”
它将使用新行的输入。第二次扫描导致相同的故障,因为输入剩余。这一次有效。你能给我解释一下它是如何工作的以及它是在哪里被记录的吗?@Machtl“%*[^n]”
它将使用新行的输入。第二次扫描导致相同的故障,因为输入剩余。这一次有效。你能给我解释一下它是如何工作的以及它是在哪里被记录的吗?@Machtl“%*[^n]”
它将使用新行的输入。第二次扫描导致相同的故障,因为输入剩余。
if(!error){
printf("Error: Your input was wrong\n");
scanf("%*[^\n]");
} else
printf("Your input was: %d\n", input1);
if(!error){
printf("Error: Your input was wrong\n");
scanf("%*[^\n]");
} else
printf("Your input was: %d\n", input1);