Выйти из программы, если я получу любой символ

Я создаю программу, и я хочу выйти из программы, если я нажму любую клавишу. Пока что я могу сделать это только при нажатии возврата, это происходит, потому что getch нуждается в нажатии возврата.

Код:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
static void * breakonret(void *instance);
int main(){
  pthread_t mthread;
  pthread_create(&mthread, NULL, breakonret, NULL);
  while(1){
    printf("Data on screen\n");
    sleep(1);
  }
}
static void * breakonret(void *instance){
  getchar();
  exit(0);
}

1 ответ

Решение

(Я пометил вопрос с getch в getchar потому что это две разные вещи).

Как вы заметили, getchar ждет возврата, которая будет нажата, прежде чем вернуться. Вам нужно использовать другую функцию, если вы хотите, чтобы она возвращалась при нажатии любой клавиши. В Windows есть встроенная функция, которая называется getch() который делает это, определенный в <conio.h>, На платформах POSIX (например, Linux, OS X) нет встроенного getch(), но вы можете написать свою собственную версию следующим образом (с http://cboard.cprogramming.com/faq-board/27714-faq-there-getch-conio-equivalent-linux-unix.html):

#include <termios.h>

int getch( ) 
{
  struct termios oldt,
                 newt;
  int            ch;
  tcgetattr( STDIN_FILENO, &oldt );
  newt = oldt;
  newt.c_lflag &= ~( ICANON | ECHO );
  tcsetattr( STDIN_FILENO, TCSANOW, &newt );
  ch = getchar();
  tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
  return ch;
}
Другие вопросы по тегам