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 :

Attente d'un caractère


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut Attente d'un caractère
    Bonjour à tous,

    me voila devant un nouveau problème alors je fais appel à vous =)
    Il y a quelque temps je suis passé sous Linux et je sais que certaines fonctions ne marchent pas.

    Je n'arrive pas à faire une attente de caractère comme je le faisais sous Windows avec getch();

    Je me suis renseigné (vous inquiètez pas ) et sous Linux il y a soit getc(); ou la macro getchar(); je les ai essayer toutes les 2 et ca ne marche pas... J'ai aussi essayer avec scanf() et je ne sais pas pourquoi il ne s'arrete pas, ca doit etre a cause de mon code.

    Je ne vais pas poster mon code, mais un meme exemple simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    include...
     
    void aide(void);
     
    int main(void){
    char c;
    scanf("%c",&c);
    switch(c){
     
                  case ('a'):
                        aide();
                        break;
                  case ('q' || 'Q'):// <=== Erreur de compilation sous cette forme /probleme 2\
                         quit();
                         break;
                  default:
                         printf("erreur");
                         getchar() // ou getc(); ou scanf <=== Problème 1 ne s'arrete pas
     
                  }
    }
     
    void aide(void){
     
                ... // Affichage de l'aide avec des printf
     
    getchar() // ou getc ou encore un scanf <========= Ne s'arrete pas /Problème 1\
     
    }
    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656

  3. #3
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Dans le mode normal (cooked), on saisit la ligne tranquillement, avec possibilité de l'éditer avec Backspace, avant de l'envoyer en enfonçant Entrée.
    Ce mode là ne me dérange absolument pas.
    Mon problème est que quoi que je fasse le programme passe à l'instruction suivante sans prendre garde au getchar() ou quoi que ce soit.
    Néanmoins je viens quand même d'essayer de passer en mode_raw le temps d'un getchar() et ca ne marche pas non plus.

    Merci quand même.

    PS : Inutile de me casser a grand coup de FAC, j'ai essayer de trouver la solution par moi même avant tout.

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Désolé j'ai encore mal compris ton problème (2ème fois dans la journée ). Bin c'est long à expliquer mais en gros après ton premier scanf ou getchar ou getc (au début de main) tu dois vider le buffer de stdin. Si tu veux en connaître la raisons => [Tutoriel] Les entrées/sorties en langage C.

  5. #5
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Pas de soucis même si ca m'a un peu enragé Ca faisait vraiment, raaah encore un petit nouveau, ils savent pas consulter les FAC. Ils croyent qu'on se casse les couilles à écrire ça pour qui ?? =P

    Je vais plutot me diriger vers le tutorial, j'aime comprendre ^^.

    Sinon j'avais une 2ème question qui n'étais pas vraiment en rapport à propos du switch : on ne peut pas faire case ( 'a' || 'A') ?

    Voila merci

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Trademark Voir le message
    Sinon j'avais une 2ème question qui n'étais pas vraiment en rapport à propos du switch : on ne peut pas faire case ( "a" || "A") ?
    Il suffit de mettre plusieurs case :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int c = getchar();
     
    switch(c) {
      case 'A':
      case 'a':
         /* faire des choses*/
        break;
       ....
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Attente de saisie d'un caractère
    Par richard_sraing dans le forum C
    Réponses: 4
    Dernier message: 04/02/2007, 12h24
  3. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08
  4. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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