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 :

Problème d'affichage - printf


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 78
    Par défaut Problème d'affichage - printf
    Bonsoir à tous,

    J'ai commencé la réalisation d'un programme en C et il se trouve que j'ai un soucis.
    Voici le code en question :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
    char lireCaractere();
    int choix_menu(void);
     
    int main(int argc, char* argv[])
    {
    	char lettre = 0;
    	int choix;
     
    	choix = choix_menu();
     
    	printf("Choix n° %d\n", choix);
    	printf("Entrer une lettre :");
     	lettre = lireCaractere();
    	printf("%c", lettre);
    	return 0;
    }
    char lireCaractere(void)
    {
        char caractere = 0;
     
        caractere = getchar();
        caractere = toupper(caractere);
        while (getchar() != '\n') ;
     
        return caractere;
    }
    int choix_menu(void)
    {
    	int selection;
    	do
    	{
    		printf("Choisir le niveau de difficulté :\n");
    		printf("1 - facile\n");
    		printf("2 - moyen\n");
    		printf("3 - difficile\n\n");
    		scanf("%d", &selection);
    	} while (selection < 1 || selection > 3);	
     
    	return selection;
    }

    Je n'arrive pas à afficher la lettre entrée au clavier,
    printf("%c", lettre); n'affiche rien lors de l'exécution du programme.

    Pourriez-vous m'expliquer d'où cela provient?
    merci de votre aide.

  2. #2
    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 helio500 Voir le message
    Pourriez-vous m'expliquer d'où cela provient?
    merci de votre aide.
    Ca vient de ce que scanf() précédant n'est pas purgé. Le getchar() prend le '\n' qui traine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Choisir le niveau de difficulte :
    1 - facile
    2 - moyen
    3 - difficile
     
    1
    Choix n 1
    Entrer une lettre :a
    10
     
     
    Process returned 0 (0x0)   execution time : 3.517 s
    Press any key to continue.
    Il faut donc purger le flux après le scanf() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while (getchar() != '\n') ;
    ceci fonctionne :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
    static int lireCaractere (void)
    {
       int caractere = getchar ();
       caractere = toupper (caractere);
       while (getchar () != '\n');
     
       return caractere;
    }
     
    static int choix_menu (void)
    {
       int selection;
       do
       {
          printf ("Choisir le niveau de difficulte :\n");
          printf ("1 - facile\n");
          printf ("2 - moyen\n");
          printf ("3 - difficile\n\n");
          scanf ("%d", &selection);
          while (getchar () != '\n');
       }
       while (selection < 1 || selection > 3);
     
       return selection;
    }
     
    int main (void)
    {
       char lettre = 0;
       int choix;
     
       choix = choix_menu ();
     
       printf ("Choix n %d\n", choix);
       printf ("Entrer une lettre :");
       lettre = lireCaractere ();
       printf ("%d %c\n", lettre, lettre);
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Choisir le niveau de difficulte :
    1 - facile
    2 - moyen
    3 - difficile
     
    1
    Choix n 1
    Entrer une lettre :a
    65 A
     
    Process returned 0 (0x0)   execution time : 3.189 s
    Press any key to continue.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 78
    Par défaut
    Merci beaucoup.

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

Discussions similaires

  1. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  2. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59
  3. [Kylix] problème d'affichage
    Par scalvi dans le forum EDI
    Réponses: 1
    Dernier message: 18/06/2003, 10h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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