扫描检查正确的输入数据,为什么它仅在一个示例中起作用?

时间:2016-10-12 20:10:57

标签: c scanf

我正在写一个简单的程序。有三个输入,仅在第一个输入中,我的scanf控制程序有效,但不是100%。当我输入1或2以外的数字或某些字符串如“sdada”时,它可以正常工作,我必须再次正确输入数据。我说它不是100%,因为当我输入类似“12x”的东西时,程序认为这是正确的数据,但当然不是。

在第二个和第三个输入中,当我再次输入一个字符串时,程序认为这是正确的数据,那么为什么它在第一个例子中起作用而在下两个中不起作用?我该如何解决这个“12x”问题?我是初学者,所以感谢你的建议。

这是我的代码:

do {
    fflush(stdin);
    printf("\nInput: ");
    scanf_control1 = scanf("%d",&input);
} while(scanf_control1 = 0 || input < 1 || input > 2);

if (input == 1 || input == 2) {

    do {
        fflush(stdin);
        printf("\nInput 2: ");
        scanf_control2 = scanf("%d",&input2);
    } while(scanf_control2 = 0);

} else {

    do{
        fflush(stdin);
        printf("\nInput 3: ");
        scanf_control3 = scanf("%s", &input3);
    } while(scanf_control3 = 0);
}

0 个答案:

没有答案