调用getch()

时间:2017-03-14 20:27:17

标签: c++ ubuntu console-application curses getch

我试图在ubuntu上使用curses创建一个简单的控制台程序,但每次我尝试调用getch并等待输入时,当我输入输入时,它会引发分段错误。我在代码的另一部分使用initscr()函数初始化了库。

以下是抛出分段错误的代码部分:

int ch;
ch = getch();

非常感谢任何帮助,

Mindoo

编辑: 在为一个char切换出int之后,我得到以下警告,这些警告在前面提到的getch()之后围绕这段代码旋转。

char ch;
  ch = getch();

  //Get xObject position
  int xObjectX = getXObject()->getPosX();
  int xObjectY = getXObject()->getPosY();

  switch (ch) {
    case KEY_LEFT:
      getXObject()->move(xObjectY, xObjectX--);
      break;

    case KEY_RIGHT:
      getXObject()->move(xObjectY, xObjectX++);
      break;

    case KEY_UP:
      getXObject()->move(xObjectY++, xObjectX);
      break;

    case KEY_DOWN:
      getXObject()->move(xObjectY--, xObjectX);
      break;

    case KEY_BACKSPACE:
      game->stop();
      break;

我收到了这些警告:

TestGameState.cpp: In member function ‘virtual void TestGameState::handleInput()’:
TestGameState.cpp:21:5: warning: case label value exceeds maximum value for type
     case KEY_LEFT:
     ^
TestGameState.cpp:25:5: warning: case label value exceeds maximum value for type
     case KEY_RIGHT:
     ^
TestGameState.cpp:29:5: warning: case label value exceeds maximum value for type
     case KEY_UP:
     ^
TestGameState.cpp:33:5: warning: case label value exceeds maximum value for type
     case KEY_DOWN:
     ^
TestGameState.cpp:37:5: warning: case label value exceeds maximum value for type
     case KEY_BACKSPACE:

1 个答案:

答案 0 :(得分:0)

这个功能不太可能是原因。你怎么告诉那条线导致SF?

您可以尝试: 1.使用getchar代替 2.尽量不要使用诅咒