debuthmx Posté(e) le 29 mai 2003 Partager Posté(e) le 29 mai 2003 J'ai la version SuSe 1.8, j'ai installé le compilateur C++ mais cependant, certain programme que j'ai ecrit et qui focntionne sous windows ne fonctionne pas sous linux. Par exemple, le fichier d'entete <conio.h> n'existe pas sous linux et donc une fonction comme getch() représente une erreur lors de la compilation du programme sous linux. Comment puis je m'en sortir? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jromang Posté(e) le 30 mai 2003 Partager Posté(e) le 30 mai 2003 Salut ! Tu ne trouevras pas de conio.h avec le compilateur GCC ! Voila comment tu peux faire pour lire l'entrée d'une touche : #include <stdio.h> #include <termios.h> #include <term.h> #include <curses.h> #include <unistd.h> static struct termios initial_settings, new_settings; static int peek_character = -1; void init_keyboard(); void close_keyboard(); int kbhit(); int readch(); int main() { int ch = 0; init_keyboard(); while( ch != 'q' ) { printf("Loopingn"); sleep(1); if( kbhit() ) { ch = readch(); printf("You hit %cn",ch); } } } void init_keyboard() { tcgetattr( 0, &initial_settings ); new_settings = initial_settings; new_settings.c_lflag &= ~ICANON; new_settings.c_lflag &= ~ECHO; new_settings.c_lflag &= ~ISIG; new_settings.c_cc[VMIN] = 1; new_settings.c_cc[VTIME] = 0; tcsetattr( 0, TCSANOW, &new_settings ); } void close_keyboard() { tcsetattr( 0, TCSANOW, &initial_settings ); } int kbhit() { char ch; int nread; if( peek_character != -1 ) return( 1 ); new_settings.c_cc[VMIN] = 0; tcsetattr( 0, TCSANOW, &new_settings ); nread = read( 0, &ch, 1 ); new_settings.c_cc[VMIN] = 1; tcsetattr( 0, TCSANOW, &new_settings ); if( nread == 1 ) { peek_character = ch; return( 1 ); } return( 0 ); } int readch() { char ch; if( peek_character != -1 ) { ch = peek_character; peek_character = -1; return( ch ); } read( 0, &ch, 1 ); return( ch ); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
debuthmx Posté(e) le 30 mai 2003 Auteur Partager Posté(e) le 30 mai 2003 Merci bcp mais avec cin.get() ça prend une ligne. Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 31 mai 2003 Partager Posté(e) le 31 mai 2003 une ligne c'est toujours plus court que 36 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.