如何只允许C中的特定输入

时间:2017-12-01 10:03:31

标签: c

我的代码:

#include<stdio.h>
char checkInput0(void);

int main() {
   char output;
   output = checkInput0();
   printf("The output is %c", output);
}

char checkInput0(void){
    char option0 = '\0',check0;
    char c;

    do{
        printf("Please enter your choice: ");

         if(scanf("%c %c",option0, &c) != 'A' || c != 'B' ){
            while((check0 = getchar()) != 0 && check0 != '\n' && check0 != EOF);
            printf("[ERR] Please enter A or B.\n");
        }else{
            break;
        }
    }while(1);
    return option0;
}

我想只允许用户输入&#34; A&#34;或&#34; B&#34;如果输入任何其他内容,我想用以下消息重新提示用户:[错误]请输入A或B. \ n

我写了一个与数字配合使用的功能但我无法使用上面的那个(checkInput0)工作,我做错了什么

1 个答案:

答案 0 :(得分:2)

  1. scanf返回 c,它返回成功设置的变量数。将其与'A'进行比较是毫无意义的。

  2. scanf调用更改为scanf("%c %c", &option0, &c):当前行为未定义:变量参数需要是指针类型。

  3. 对于x != 'A' || x != 'B'的任何值,
  4. 1x

  5. 考虑将scanf移到if条件之外:明确检查scanf的返回值。关于第三点,你想要&&吗?

    还要小心使用 ace 代码,将c写在运算符的一侧,然后在另一侧读取它。在这种情况下很好,因为||是一个排序点,但是你非常接近未定义的行为。