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 :

Probleme avec getchar ( )


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Probleme avec getchar ( )
    Bjr,

    Je voudrais imprimer un output d'array géneré par srand( ) et faire une pause aprés que les 20 premiers elements soient affichées.

    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
     
    void extracredit ( void ) {
     
     int i, num;
     int k = 1;
     int interval;
     srand (time (NULL));
     
     printf("Enter number of elements to generate : ");
     scanf("%d", &num);
     
     int array[num];
     
     printf("Enter interval of number generation ( 1 - ? ) :");
     scanf("%d", &interval);
     
     for ( i = 0; i < num; i++) {
       array[i] = rand () %interval;
       }
     
      qsort ( array, num, sizeof ( int ), compare );
     
      for ( i = 0; i < num; i++){
      if  ( array [i] < 1000){
          printf("%02d. array[%02d] = %d\n", k, k, array[i]);
          }
     if (array[20] != NULL && k>19 && k < 21){
          puts("Press RETURN to continue\n");
          getchar ();  /* supposé faire une pause */
          }
      k++;
      }
     
     printf("\n");
    }
    getchar () que j'ai mis a l'interieur d'une condition qui elle meme est a l'interieur d'une boucle ne semble pas fonctionner.

    Ou est le probleme ?

  2. #2
    Membre confirmé
    Avatar de Nykoo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 234
    Par défaut
    Citation Envoyé par virtuadrack Voir le message
    Ou est le probleme ?
    Bonne question où est le problème? Ton programme marche? A quelle ligne bloque-t-il?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Citation Envoyé par Nykoo Voir le message
    Bonne question où est le problème? Ton programme marche? A quelle ligne bloque-t-il?

    Le programme marche, mais getchar() ne fait pas de pause comme ceci:

    1. array[01] = 1
    2. array[02] = 2
    3. array[03] = 5
    ...
    20. array[20] = 20

    Press RETURN to continue output.
    Et apres avoir appuye sur Entree, l'output doit commencer a partir de 21

  4. #4
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    le problem vient de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%d", &interval);
    scanf va capturer le valeur que l'utilisateur a tapé et l'affecter a interval, mais le problem c'est que l'utilisateur a tapé aussi entrer '\n' , qui a été enregistré dans le buffer du clavier, a la prochaine appel du scanf ou getchar la fonction va lire '\n' directement sans demander a l utilisateur d'entrer une caractere.

    Pour resoudre ce problem ajoute ce ligne de code apres les scanf comme suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scanf("%d", &interval);
    while(getchar!='\n');
    et ca devrai marcher

  5. #5
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Par défaut
    Avant d'appeler la fonction getchar, tu as utilisé scanf : tu as donc appuyé sur <enter> pour valider ta saisie et la caractère '\n' est resté dans le buffer.

    Si tu appelles getchar et que le buffer n'est pas vide, comme c'est le cas dans ton programme, alors getchar lit directement le premier caractère dans le buffer.
    Pour que getchar attende la saisie de l'utilisateur, le buffer doit être vide.
    Le moyen le plus simple de vider le buffer est de faire une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (getchar() != '\n');
    à insérer juste avant ton getchar.

    Plus d'informations dans la FAQ.

    EDIT : grillé !

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Merci

    chokrane a khay

  7. #7
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    Citation Envoyé par virtuadrack Voir le message
    chokrane a khay
    you're welcome

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

Discussions similaires

  1. probleme avec getchar()
    Par dz_robotix dans le forum Linux
    Réponses: 1
    Dernier message: 13/04/2007, 11h40
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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