我正在尝试处理用户输入代码中未特别注意的内容。我正在使用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;
}
感谢任何帮助。
答案 0 :(得分: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);
}
免责声明:这是未经测试的代码。