Debian a funkcja getch()
-
- Posty: 17
- Rejestracja: 26 grudnia 2014, 00:40
Debian a funkcja getch()
Witam na samym początku chciałbym zaznaczyć że jestem świadom tego, że ten wątek był poruszany. Jestem początkujący jeżeli idzie o C++ a tym bardziej o linux'a. Próbowałem na wszystkie sposoby getchar, putchar, różne biblioteki ncourses itp.. i dalej mój problem nie został rozwiązany. Chodzi mi o odpowiednik funkcji getch() który po wciśnięciu klawisza bez zatwierdzania go enterem będzie reagował na polecenie. Jakiś pomysł?
-
- Posty: 17
- Rejestracja: 26 grudnia 2014, 00:40
Zastosowalem ten kod i teraz nie wazne co wcisne i tak instrukcja if mi sie nie chce wykonac, tylko else.
Dodane:
Dodalem jeszcze po wywolaniu funkcji getch cout<<ch i nie wazne co wcisne to pokazuje 0. Przepraszam ze napisalem 2 posty zamiast edytowac ale nie moge znalesc funkcji usun post..
Kod: Zaznacz cały
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
int mygetch( ) {
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;
}
Potem w main...
int ch;
mygetch();
if(ch==111) // jezeli zostanie wcisniete "P" to wykonaj instrukcje
else
cout<<"Wcisnieto zly klawisz!";
.
.
.
Dodalem jeszcze po wywolaniu funkcji getch cout<<ch i nie wazne co wcisne to pokazuje 0. Przepraszam ze napisalem 2 posty zamiast edytowac ale nie moge znalesc funkcji usun post..
Jest coś takiego jak edycja wiadomości.
Zadeklarowałeś ch lecz nigdzie nie wpisujesz do niej wyniku jaki zwraca funkcja mygetch.
Wywołujesz tą funkcję ale bez zachwowania wyniku jaki zwraca.
Skoryguj wywołanie.
Zadeklarowałeś ch lecz nigdzie nie wpisujesz do niej wyniku jaki zwraca funkcja mygetch.
Wywołujesz tą funkcję ale bez zachwowania wyniku jaki zwraca.
Skoryguj wywołanie.
Kod: Zaznacz cały
zmienna = funkcja();
'P' ma wartość 80, a 'p' 112, skompilowałem to co tu wkleiłeś i działa... http://pastebin.com/0KuAWhE1