Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/09/2008, à 11: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 smile

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 smile:)

Dernière modification par magiccerbere (Le 01/09/2008, à 11:32)


(Sur)vie... C'est tout...

Hors ligne

#2 Le 01/09/2008, à 11:36

nicolas.sitbon

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...etc

relis toi : c'est incompréhensible!!!

Hors ligne

#3 Le 01/09/2008, à 11: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, à 12:21

nicolas.sitbon

Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI

magiccerbere a écrit :

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, à 14:05

Totor

Re : Equivalent de getch... trouvé,me renvoie le nombre/Caractere en ASCI

nicolas.sitbon a écrit :
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...etc

relis 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, à 13: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