#1 Le 01/09/2008, à 10:15
- magiccerbere
Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
Bonjour à tout les Ubunteros,
Voila j'ai un probleme en programmation C.
Je cherchais un équivalent de getch() de conio.h disponible que sous windows.
J'ai essayé deux choses:
le getch() de ncurses : probleme avec le buffer, le nombre est stocké dedans mais il es apparement pas enregistré dans getch... Bizarre
getch() bricolait: J'ai plus ou moins récupéré un getch() qui est censé marché, mais la est le probleme:
il enregistre le nombre en caractere ASCI: 1 vaut 49,2 vaut 50... A vaut 65...etc
Donc, es ce que je dois crée un convertisseur de caractere ASCI? Ce qui m'a l'air d'etre long et plutot inutile car une solution plus simple doit exister...
Voici ma fonction getch() bricolait:
int getch() /*equivalent GNU/Linux de getch(). Permet a l'utilisateur d'appuyer sur une touche*/
{
struct termios initial_settings,new_settings;
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_oflag&=~NL0;
new_settings.c_oflag&=~CR0;
new_settings.c_oflag&=~TAB0;
new_settings.c_oflag&=~BS0;
new_settings.c_cc[VMIN]=1;
new_settings.c_cc[VTIME]=0;
cfsetospeed(&new_settings,B230400);
cfsetispeed(&new_settings,0);
tcsetattr(0,TCSANOW,&new_settings);
int ch;
read(0,&ch,1);
tcsetattr(0,TCSANOW,&initial_settings);
return ch;
}
Merci
EDIT:Non, enfaite c'est bon, c'était tout simple. J'explique, pour éviter que d'autre personnes cherche inutilement...
Il suffit d'utiliser les caractere ASCI avec des ' '.
Ex:
switch(choix)
{
case '1':
/*etc*/
Voila :)
Dernière modification par magiccerbere (Le 01/09/2008, à 10:32)
(Sur)vie... C'est tout...
Hors ligne
#2 Le 01/09/2008, à 10:36
- nicolas.sitbon
Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
le getch() de ncurses : probleme avec le buffer, le nombre est stocké dedans mais il es apparement pas enregistré dans getch... Bizarre
getch() bricolait: J'ai plus ou moins récupéré un getch() qui est censé marché, mais la est le probleme:
il enregistre le nombre en caractere ASCI: 1 vaut 49,2 vaut 50... A vaut 65...etc
relis toi : c'est incompréhensible!!!
Hors ligne
#3 Le 01/09/2008, à 10:56
- magiccerbere
Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
Justement, je ne vois pas ce qu'il y a d'incompréhensible...
(Sur)vie... C'est tout...
Hors ligne
#4 Le 01/09/2008, à 11:21
- nicolas.sitbon
Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
mais il es apparement pas enregistré dans getch... Bizarre
depuis quand on stocke quoi que ce soit dans une fonction? ça n'a aucun sens...
Hors ligne
#5 Le 01/09/2008, à 13:05
- Totor
Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
magiccerbere a écrit :le getch() de ncurses : probleme avec le buffer, le nombre est stocké dedans mais il es apparement pas enregistré dans getch... Bizarre
getch() bricolait: J'ai plus ou moins récupéré un getch() qui est censé marché, mais la est le probleme:
il enregistre le nombre en caractere ASCI: 1 vaut 49,2 vaut 50... A vaut 65...etcrelis toi : c'est incompréhensible!!!
même sentiment pour moi ... des termes non appropriés, des erreurs de conjugaison et orthographe rendent rendent difficile la compréhension du contexte et du problème...
-- Lucid Lynx --
Hors ligne
#6 Le 02/09/2008, à 12:09
- Anium
Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI
Les fonctions getchar, scanf me paraissent être beaucoup plus propre...
Sinon, pour information, la conversion ASCII / caractère est très simple. Un simple cast suffit :
int mon_caractere_ascii = 72;
char mon_caractere = (char)mon_caractere_ascii; /* mon_caractere == 'H' */
Hors ligne