处理非指定和非空 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);
}
免责声明:这是未经测试的代码。
当用户输入代码中未特别注意的内容时,我正在尝试处理。我正在使用 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);
}
免责声明:这是未经测试的代码。