Bonjour, je veux saisir un entier avec la fonction scanf, puis saisir un caractère avec la fonction getchar sans taper sur la touche "entrer".
Pour cela j'ai trouver le code cidessous avec quelques modifications.( c'est clair : c sous linux)
Le problème est que lors de l'execution de ce programme, le programme fait la saisie du premier entier "a" et va ignorer la saisie du deuxième caractère "b".en fait il va affecter b=10 le code ascii de la touche enter. ce que je veux pas.Code:#include <stdio.h> #include <termios.h> #include <unistd.h> #include <sys/types.h> #include <sys/time.h> void changemode(int dir) { static struct termios oldt, newt; if ( dir == 1 ) { tcgetattr( STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &newt); } else tcsetattr( STDIN_FILENO, TCSANOW, &oldt); } int kbhit (void) { struct timeval tv; fd_set rdfs; tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&rdfs); FD_SET (STDIN_FILENO, &rdfs); select(STDIN_FILENO+1, &rdfs, NULL, NULL, &tv); return FD_ISSET(STDIN_FILENO, &rdfs); } void main() { int a,b; printf("Donner un entier"); scanf("%d",&a); changemode(1); printf("Donner un caractere"); b=getchar(); changemode(0); printf("a=%d et ASCII(b)=%d",a,b); }
Je serais très reconnaissant si quelqun m'aide.
-----