IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

getch() et <conio>


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut getch() et <conio>
    Mais qu'est ce qui ne va pas dans ce code ci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
    #include <curses.h>
     
    main() {
    char c;
    c=getch();
    printf("\n %c",c);
    }
    Quelqu'un pourrait m'expliquer ou proposer un exemple en 3 lignes maximum ?

  2. #2
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut Re: getch - curses ou ncurses ?
    Citation Envoyé par zulul
    Mais qu'est ce qui ne va pas dans ce petit code ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
    #include <ncurses.h>
     
    main() {
    char c;
    c=getch();
    printf("\n %c",c);
    }
    A la compile ça me sort ça :

    /tmp/ccyoc9HA.o(.text+0x21): In function `main':
    test.c: undefined reference to `stdscr'
    /tmp/ccyoc9HA.o(.text+0x26):test.c: undefined reference to `wgetch' << pourquoi wgetch ??
    Mais plutôt getchar a la place de getch() tu programme sous quel système d'exploitation?

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    oops j'ai pas rafraichi avant... linux

    le getchar c'est pas une bonne idée, parceque je ne veux pas de "return". Seulement un appui sur la touche...

  4. #4
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut
    Citation Envoyé par zulul
    oops j'ai pas rafraichi avant... linux

    le getchar c'est pas une bonne idée, parceque je ne veux pas de "return". Seulement un appui sur la touche...
    Alors met int main (void) au debut de ton prog.

  5. #5
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut Re: getch - curses ou ncurses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <ncurses.h>
     
    int main (void)
    {
        char c;
        c=getch();
        printf ("\n%c",c);
     
        return (0);
    }
    Voilà normalement ce programme devrait marcher.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    merci mais ça a pas trop l'air de marcher sous gcc, je retourne sur windoze

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 466
    Par défaut
    Citation Envoyé par zulul Voir le message
    merci mais ça a pas trop l'air de marcher sous gcc, je retourne sur windoze
    D'une manière générale, en dehors de curses, tu lis « l'entrée standard » de ton processus. Ça ne signifie pas que celle-ci est directement reliée au clavier.

    Dans le cas présent, tu travailles dans un « terminal ». Il s'agit d'un terminal virtuel − probablement un x-term − mais ceux-ci sont à l'origine censés se trouver au bout d'une ligne et être bufferisés par un pilote sous-jacent. En mode canonique, entre autre chose, les données sont disponibles ligne par ligne, ce qui permet d'une part à l'utilisateur de corriger ses données avant de les envoyer et, d'autre part, de réduire notablement l'overhead que cela engendre au niveau du système.

    Autrement dit : si tu veux recevoir les caractères un par un pour pouvoir faire un « appui sur une touche », il faut d'abord demander au terminal de te les envoyer. Mais ça, bien sûr, c'est de la programmation système. Ce n'est pas spécifique au langage C.

    Si tu n'as pas envie de t'ennuyer à gérer ça dans le programme C, fais « stty -icanon » dans le terminal où tu travailles. Sinon, regardes du côté de termios.

  8. #8
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par zulul
    merci mais ça a pas trop l'air de marcher sous gcc, je retourne sur windoze
    Il faudrait être plus explicite. Est-ce que cela ne marche pas où ca ne répond pas a ce tu souhaites faire ?
    Sinon dis clairement ce qui ne marche. A savoir si il s'agit d'une erreur de compilation avec gcc ou alors autre chose.


    bonne nuit,

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par benjiprog
    Citation Envoyé par zulul
    oops j'ai pas rafraichi avant... linux

    le getchar c'est pas une bonne idée, parceque je ne veux pas de "return". Seulement un appui sur la touche...
    Alors met int main (void) au debut de ton prog.
    Ok, mais quel rapport ?

  10. #10
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    Avec Dev-C++, il n'y a aucun problème parceque j'utilise la librairie la plus drôle de l'univers, à savoir conio.h mais quend je remonte sous linux et son gcc avec ncurses.h ou curses.h, peu importe en fait, ça me ressort toujours ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/ccyoc9HA.o(.text+0x21): In function `main': 
    test.c: undefined reference to `stdscr' 
    /tmp/ccyoc9HA.o(.text+0x26):test.c: undefined reference to `wgetch'
    pour la compile je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc [f.c] -o -Icurses [prg]
    C'est fatiguant à la fin et le man getch() n'apporte pratiquement aucune explication, je comprends pourquoi microsoft à perçé sur le marché, parcequ'on perd moins de temps en futilité. Avec linux, c'est toujours les années 60

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par zulul
    pour la compile je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc [f.c] -o -Icurses [prg]
    <Hors-sujet>
    C'est pas -I, mais -l (L minuscule comme 'library')..
    </>

  12. #12
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par zulul
    C'est fatiguant à la fin et le man getch() n'apporte pratiquement aucune explication, je comprends pourquoi microsoft à perçé sur le marché, parcequ'on perd moins de temps en futilité. Avec linux, c'est toujours les années 60
    <HS>J'aurais dans ton cas plutot parler de rigueur que de "futilité" </HS>

  13. #13
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    Salut,

    Que j'utilise ncurses ou curses avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "stdio.h"
    #include "curses.h"
     
    void main() {
    char c;
    c=getch();
    printf(" \n %c",c);
    }
    j'ai maintenant un autre message d'erreur à la compile, avec -lncurses: # no newline at end of file // ce qui compile mais donne "segmentation fault" à l'exec

    Qu'est ce que cela signifie ?

  14. #14
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ca veut dire que tu n'as pas installé le package (n)curses-dev...

    --
    Jedaï

  15. #15
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    j'ai trouvé comment ça marche mais ça utilise la fenetre curses... ce n'est toujours pas ce que je veux et on tire en ralonge pour un truc si simple, ce n'est pas possible d'en arriver là ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "stdio.h"
    #include "ncurses.h"
     
    void main() {
    initscr();
    noecho();
    char c;
    c=getch();
    printw("\n %c",c);
    getch();
    endwin();
    }
    Quelqu'un a une alternative sans passer par le getchar ? Et sans passer par là :http://c.developpez.com/faq/c/?page=...CREEN_mode_raw

  16. #16
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    #include<conio.h>
     
    int main(void)
    {
        char c;
        c=getch ();
        printf("%c", c);
        return 0;
    }

Discussions similaires

  1. getch()
    Par zbooon dans le forum Réseau
    Réponses: 5
    Dernier message: 11/09/2005, 19h51
  2. Le buffer clavier avec cin, et getch()
    Par Info420 dans le forum SL & STL
    Réponses: 1
    Dernier message: 06/12/2004, 12h45
  3. conio.c
    Par teto dans le forum C
    Réponses: 4
    Dernier message: 31/01/2004, 17h40
  4. getch, wgetch...
    Par drKzs dans le forum C
    Réponses: 8
    Dernier message: 16/09/2003, 23h16
  5. getch() avec gcc
    Par Jorus dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 16/12/2002, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo