我正在使用Xcode并使用C语言试图了解如何使用Getch函数来启动项目。我复制了一些有人写过的代码,作为一个应该有效的例子,但是代替我等待我输入一个字符的代码,它会为我返回一个:
#include <midi_lib.h> <---------- this needs to be here for later
#include <curses.h>
int main() {
keypad(stdscr, TRUE); /* I dont know if this is needed*/
char c;
puts("Enter a character\n");
c = getch();
printf("You just typed a %c! \n", c);
getch();
}
这是输出:
Enter a character
You just typed a \377!
如果我使用Getchar(),它可以工作,但我不想输入。
我对编码很新,所以它可能很简单,但我不知道......
LT
答案 0 :(得分:1)
好吧,你甚至没有用initscr()
初始化Ncurses库。
你真的有很多东西缺失,所以我建议你阅读Ncurses howto,它解释了你从初始化(例如keypad(stdscr, true)
是什么)到输入的所有内容以及更多内容。
这是一个有效的例子:
#include <ncurses.h>
int main()
{
int ch;
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
ch = getch();
endwin();
printf("The key pressed is %d\n", ch);
}
答案 1 :(得分:0)
试试这个让你入门
#include <midi_lib.h> <---------- this needs to be here for later
#include <curses.h>
int main()
{
char c;
keypad(stdscr, TRUE); /* I dont know if this is needed*/
puts("Enter a character\n");
do {
c = getch();
} while (c == (char)-1);
printf("You just typed a %c! \n",c);
}
请注意,getch()会不断轮询键盘以进行输入 none,它将获得-1并重试,直到有一些情况下它将从while循环中掉出并继续。
这可能不是你应该如何编码,但它确实回答了你的问题。计算机在不断轮询键盘时会很忙。