Выйти из программы, если я получу любой символ
Я создаю программу, и я хочу выйти из программы, если я нажму любую клавишу. Пока что я могу сделать это только при нажатии возврата, это происходит, потому что 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;
}