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

时间:2015-10-25 16:47:02

标签: c printing letter

我要求用户输入一封信,每封信都有不同之处。如果他们输入任何其他内容,则会在结尾处打印出else语句。问题是无论我输入什么,都会打印出else语句并打印出来#34;输入一个字母:"两次。我一直在搜索谷歌和堆栈溢出,我不知道我是否是盲人或我能找到答案的是什么。请帮忙。

    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");
    }
}

2 个答案:

答案 0 :(得分:2)

我认为您的问题是在\n

之后留下的换行符scanf()

scanf()代码更改为

scanf(" %c", &letter);

%c之前的空格应该从左边的换行符\n转义。

答案 1 :(得分:0)

如果你写while(false),循环的主体将不会被执行。你需要写while(true)而不是。当你使用scanf时,你必须注意'\ n'字符,因为它会对输出产生影响。在%c之前添加的scanf语句空间应该处理它。

 while(true){
    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");
    }
}