1

我正在使用 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(),它可以工作,但我不想按 Enter。

我对编码真的很陌生,所以它可能很简单,但我不知道......

LT

4

2 回答 2

1

好吧,您甚至没有使用initscr().

您确实缺少很多东西,因此我建议您阅读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);
}
于 2013-04-27T17:51:36.187 回答
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() 不断地轮询键盘以获取输入,当没有输入时,它会得到 -1 并重试,直到有一些情况下它会退出 while 循环并继续。

这可能不是您应该编码的方式,但它确实回答了您的问题。计算机在不断轮询键盘时会处于忙碌状态。

于 2013-04-08T16:24:39.457 回答