Debian a funkcja getch()

Potrzebujesz pomocy z C, C++, perl, python, itp.
cyryl19955
Posty: 17
Rejestracja: 26 grudnia 2014, 00:40

Debian a funkcja getch()

Post autor: cyryl19955 »

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ł?
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Post autor: dedito »

cyryl19955
Posty: 17
Rejestracja: 26 grudnia 2014, 00:40

Post autor: cyryl19955 »

Zastosowalem ten kod i teraz nie wazne co wcisne i tak instrukcja if mi sie nie chce wykonac, tylko else.

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!";
.
.
.
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..
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Post autor: dedito »

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.

Kod: Zaznacz cały

zmienna = funkcja();
pj1031999
Posty: 54
Rejestracja: 02 lipca 2014, 18:24

Post autor: pj1031999 »

'P' ma wartość 80, a 'p' 112, skompilowałem to co tu wkleiłeś i działa... http://pastebin.com/0KuAWhE1
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Post autor: dedito »

Skompilowałeś ale nie to co on wkleił, tylko to co sam zrobiłeś na bazie jego kodu, w sumie rozwiązałeś problem za niego.
pj1031999
Posty: 54
Rejestracja: 02 lipca 2014, 18:24

Post autor: pj1031999 »

Nie ogarniam, przecież funkcja jest żywcem wzięta z tego co wkleił... No chyba, że rzeczywiście nie przypisywał wyniku do zmiennej itp...
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Post autor: dedito »

To wskaż post w którym jest ten kod z linka który zamieściłeć, bo chyba ja czegoś nie ogarniam.
Jeśli dobrze widzę to w poście nr 3 nie ma nawet pełnej funkcji main.
cyryl19955
Posty: 17
Rejestracja: 26 grudnia 2014, 00:40

Post autor: cyryl19955 »

Racja, dzieki wielkie.
pj1031999
Posty: 54
Rejestracja: 02 lipca 2014, 18:24

Post autor: pj1031999 »

Uczepiłeś się, w 3 poście napisał funkcję której potrzebował i tyle, koniec. Nie ustawiał wartości zmiennej na tą zwracaną przez funkcję, co każdemu może się zdarzyć. Skoro problem został rozwiązany to nie widzę sensu na dalszą dyskusję.
ODPOWIEDZ