• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

linux pobieranie znaku bez entera

Object Storage Arubacloud
0 głosów
496 wizyt
pytanie zadane 25 lutego 2018 w C i C++ przez noel1402 Użytkownik (630 p.)
W jaki sposób w systemie Linux pobrać znak bez wciśnięcia enter? Na Windows używałem getch() lecz na Linux nie działa. w jaki prosty sposób to rozwiązać? I czy jest na to kod działający i na Windows i na Linux?

3 odpowiedzi

+1 głos
odpowiedź 25 lutego 2018 przez Pabiak Gaduła (4,450 p.)
wybrane 27 lutego 2018 przez noel1402
 
Najlepsza
#include<unistd.h>
#include<termios.h>

char getch()
{
    char buf=0;
    struct termios old={0};
    fflush(stdout);
    if(tcgetattr(0, &old)<0)
        perror("tcsetattr()");
    old.c_lflag&=~ICANON;
    old.c_lflag&=~ECHO;
    old.c_cc[VMIN]=1;
    old.c_cc[VTIME]=0;
    if(tcsetattr(0, TCSANOW, &old)<0)
        perror("tcsetattr ICANON");
    if(read(0,&buf,1)<0)
        perror("read()");
    old.c_lflag|=ICANON;
    old.c_lflag|=ECHO;
    if(tcsetattr(0, TCSADRAIN, &old)<0)
        perror ("tcsetattr ~ICANON");
    return buf;
}

Wklej to przed maina i będziesz mógł uzywać getch() jak w windowsie 

https://stackoverflow.com/questions/7469139/what-is-equivalent-to-getch-getche-in-linux

getch() jest jeszcze w bibliotece ncurses.h, nie wiem jakiej dystrybucji używasz, ale w mincie musiałem ją zainstalować ręcznie

 

komentarz 27 lutego 2018 przez noel1402 Użytkownik (630 p.)
Posiadam Linuxa Lubuntu, czytałem już w Internecie o ncurses.h, ale nawet po zainstalowaniu (komendą sudo apt-get install ncurses.h) mój code blocks jej nie wyczuwał. Z biblioteki unistd.h już korzystałem więc wiem, że nie trzeba jej doinstalowywać, ale czy z termios.h jest tak samo?
komentarz 27 lutego 2018 przez Pabiak Gaduła (4,450 p.)
Ja nie musiałem instalować, skopiuj i zobacz czy działa
komentarz 27 lutego 2018 przez noel1402 Użytkownik (630 p.)
Działa tak samo jak oryginał! Dziękuję!
0 głosów
odpowiedź 25 lutego 2018 przez Knayder Nałogowiec (37,640 p.)
Najlepiej w żaden. Pomiń to po prostu i przeżyj ten enter. A jeżeli potrzebujesz to do jakiejś gry, bo inaczej nie da się sterować, to najlepiej naucz się jakiejś biblioteki graficznej i rób okienka.
SFML na przykład. Nie taki jest zamysł konsoli.
komentarz 27 lutego 2018 przez noel1402 Użytkownik (630 p.)
Robię konsolowy edytor HTML. Wszystko działa, mogę w nim płynnie pisać, lecz żeby zareagował na znak muszę wcisnąć enter.
–2 głosów
odpowiedź 26 lutego 2018 przez gielo Użytkownik (720 p.)
getch( ) jest zdefiniowane w bibliotece conio.h, zapoznaj się z tym artykułem i najzwyczajniej pobierz sobie tą biliotekę pod linuksa. https://oduk.pl/c-biblioteka-conio-h-linuksem/
komentarz 27 lutego 2018 przez noel1402 Użytkownik (630 p.)
zależy pod jakim Linuxem. Pod moim Lubuntu nie działa. Udało mi się jednak zdobyć plik .cpp tej biblioteki i pozmieniać trochę pod Linuxa, lecz dołączanie ciągle dość dużego pliku nie jest zbyt dobre.

Podobne pytania

0 głosów
2 odpowiedzi 177 wizyt
pytanie zadane 26 lipca 2015 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 2 stycznia 2018 w Systemy operacyjne, programy przez Karol1020 Nowicjusz (130 p.)
+1 głos
1 odpowiedź 126 wizyt
pytanie zadane 24 stycznia 2021 w C i C++ przez Wiktor Koźlik Użytkownik (950 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...