处理非指定和非空 Getch()(C 程序)

Handling Non-Specified & Non-Empty Getch() (C program)

当用户输入代码中未特别注意的内容时,我正在尝试处理。我正在使用 getch() ,当用户输入“1”时,会有一个条件对其做出反应;然而,我想要实现的是,如果用户输入任何其他内容,另一个条件将对其做出反应。我认为这意味着检查 getch() != EOF 和 getch() != '1' 但我没有得到我认为我会得到的结果......有时有条件命中,有时没有。我的代码如下(记得用-lncurses编译):

#include <ncurses.h>

int main()
{
    initscr();

    // makes user input immediately available
    cbreak();

    // makes getch() not echo user unput
    noecho();

    // if user input is excessive use the scroll to show it
    scrollok(stdscr, TRUE);

    // turns getch() into a non-blocking call
    nodelay(stdscr, TRUE);

    // loop forever
    while (true) {

        // if the user enters '1' its a hit
        if (getch() == '1') {
            printw("WHACK!\n");
        }

        // anything else is a miss
        if ( (getch() != '1') && (getch() != EOF) ){
            printw("SWING AND A MISS!\n");
        }

        // sleep for 300 milliseconds
        napms(300);
        printw(".\n");
    }

    return 0;
}

感谢任何帮助。

你的逻辑是错误的。

你可能想要这个:

while (true) {
    int c = getch();

    if (c == ERR) {                      // no key pressed
        printw(".\n");
    }
    else if (c == '1') {                 // if the user enters '1' its a hit
        printw("WHACK!\n");
    }
    else {                               // anything else is a miss       
        printw("SWING AND A MISS!\n");
    }

    // sleep for 300 milliseconds
    napms(300);
}

免责声明:这是未经测试的代码。