c - 我该如何在 C 中解决这个问题?

标签 c printing letter

我要求用户输入一个字母,每个字母都有不同的作用。如果他们输入任何其他内容,它会在最后打印出 else 语句。问题是,无论我输入什么,else 语句都会被打印,并且它会打印“Enter a letter:”两次。我一直在google和stackoverflow上搜索,我不知道是我瞎了还是怎么的,但我找不到答案。请帮忙。

    while(false){ //I have a method here that returns true or false
    printf("Enter a letter: ");
    char letter;
    scanf("%c", &letter);

    if(letter == 'a'){ //position left
        //do some code
    }else if(letter == 'd'){ //position right
        //do some code
    }else if(letter == 'w'){ //value up
        //do some code
    }else if(letter == 'x'){ //value down
        //do some code
    }else{
        printf("NEW MOVEMENT: Enter a valid command by keyword:\n");
        printf("Valid commands: a d w x\n");
    }
}

最佳答案

我认为你的问题是 scanf() 之后遗漏的换行符 \n

scanf()代码更改为

scanf(" %c", &letter);

%c 之前的空格应转义留下的换行符 \n 字符。

关于c - 我该如何在 C 中解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332260/

相关文章:

在 C 中使用 while(scanf) 时出现代码块错误

c++ - Bazel 头文件代码生成器

iOS:使用 printerID 打印而不选择打印机

node.js - 为字母指定特定数字

c - 查找组和字母的组合

c - 通过 `malloc` 替换 `calloc` 、 `realloc` 、 `free` 和 `LD_PRELOAD` 时出现段错误

c - TCP连接: server doesn't 'understand' that receiving is over

java - 从文件中打印出正确的数据

java - 我在 java 中遇到问题,无法打印所有 swing 组件

java - 在不使用正则表达式的情况下,判断一个字符是 Java 中的字母还是数字的最佳方法是什么?