2015-08-09 7 views
3

для использования клавиш со стрелками, сначала его необходимо сохранить для его анализа. Вот почему я использую scanf, чтобы сохранить его. Но когда я пытаюсь запустить этот код, и при нажатии на клавишу, то она показывает ^[[A и когда я нажимаю войти, то это ^[[A удаляет и выход из программы без печати PRINTF утверждения printf("%s",c). и printf("UP\n").удерживайте экран для приема клавиш со стрелками

#include <stdio.h> 
int main() 
{ 
    char c[50]; 
    scanf("%s",&c); 
    printf("%s",c); 
    if (getch() == '\033'){ // if the first value is esc 
     getch();// skip the [ 
     getch();// skip the [ 
     switch(getch()) { // the real value 
      case 'A': 
       printf("UP\n"); 
       break; 
      case 'B': 
       printf("DOWN\n"); 
       break; 
     } 
    } 
    return 0; 
} 
+0

Это не то, как это работает! Что вы на самом деле пытаетесь сделать? Reinvent _curses_, или ...? –

ответ

1

You будет легко, если вы используете библиотеку ncurses. Просто просмотрите documentation, чтобы узнать, как его установить. После установки прочитать часть на Interfacing with the key board

Вот пример кода

#include <ncurses.h> 
int main() 
{ 
    int ch; 

    initscr(); 
    raw(); 
    keypad(stdscr, TRUE); 
    noecho(); 

    while(1) 
    { 
     ch = getch(); 

     switch(ch) 
     { 
      case KEY_UP: 
       printw("\nUp Arrow"); 
       break; 
      case KEY_DOWN: 
       printw("\nDown Arrow"); 
       break; 
      case KEY_LEFT: 
       printw("\nLeft Arrow"); 
       break; 
      case KEY_RIGHT: 
       printw("\nRight Arrow"); 
       break; 
     } 

     if(ch == KEY_UP) 
      break; 
    } 

    endwin(); 
} 
+0

Сэр эта программа инициирует экран и не печатает какую-либо инструкцию printf при нажатии клавиш, а когда нажата кнопка uparrow, выдается без печати «Стрелка вверх». –

+0

сэр. У меня проблемы с кодом. Мы должны использовать printw вместо printf для печати отформатированного вывода. Сэр, но этот код работает, когда мы инициализируем экран. Он не работает на текущей консоли. Спасибо –

+0

Я думаю, что ncurses поставляется с предустановкой в ​​устройствах linux. ri8? @Jaydeep –

 Смежные вопросы

  • Нет связанных вопросов^_^