Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] les getchar scanf et les \n

probleme !!!

Sujet résolu
    12 mars 2006 à 11:12:10

    Citation : cours C

    Que s'est-il passé ?

    En fait, quand vous rentrez du texte en console, tout ce que vous tapez est stocké quelque part en mémoire, y compris l'appui sur la touche Entrée (\n).


    Bonjour à tous ! Ci dessus , le cours de mateo ! ( enfin , une partie ! :D )
    Mon probleme est semblable à celui que pose le TP du pendu !
    // les deux fonctions
    char lireChar()
    {
        char caractere = 0;
         // On lit le premier caractère
          caractere = getchar();
        //On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
       while(getchar() != '\n')
          {
          }
        return caractere; // On retourne le premier caractère qu'on a lu
    }
    int lireInt()
    {
        int caractere = 0;
        scanf("%ld"‚&caractere);
        // On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
        while (getchar() != '\n');
        return caractere; // On retourne le premier caractère qu'on a lu
    }
    /////////////////
    // et le MAIN  //
    /////////////////
    #include <stdio.h>
    #include <stdlib.h>
    #include "Perso.h"
    int main()
    {
            printf("== Bienvenue dans LiveSimulation ==\n");
            printf("Avez vous deja jouer a ce jeu ?(o/n)");
            char deja_jouer = getchar();
            if(deja_jouer == 'o')
       {
    // on joue
       printf("Tres bien alors contiuons la partie !");
       }
       else
       {
    // on "inscrit le perso"
          printf("Bien‚ alors je vais vous expliquer le principe du jeu\n");
          printf("Vous etes une personne qui vit dans une ville avec un appartement etc...\n");
          printf("Vous menez une vie tranquille et vous perdez lorsque vous n'est plus en bonne sante ou lorsque vous n'avez plus d'argent! \n");
          printf("Cependant ‚ nous allons d'abord vous posez quelque question !\n");
          printf("Preferez vous etre un homme ou une femme (h/f)?");
          Pers p;
          char sexe = lireChar();
          //printf("Vous n'exister pas dans notre monde !\n");
          printf("\nQuel age avez vous ?");
          int age = lireInt();
          printf("Vous etes %c et vous avez %ld ans"‚sexe‚age);

       }
            return 0;
    }

    Explication : Lorsque , mon code demande le sexe du personnage , celui-ci répond et ensuite tape sur entree , pareille pour l'age ! Cependant , quand j'affiche les deux variables , le sexe est un \n alors que l'age est un int ( comme il faut quoi ... )
    • Deux questions :
    • Pourquoi, meme avec la fonction "lireChar" l'ordinateur prend en compte le \n ?
    • Et ............ Comment y remedier !

    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2006 à 13:30:24

      Citation : NarTy

      • Deux questions :
      • Pourquoi, meme avec la fonction "lireChar" l'ordinateur prend en compte le \n ?
      • Et ............ Comment y remedier !


      Merci !

      La maitrise des saisies en C demande une bonne connaissance du comportement de ces fonctions de saisie. Tout est expliqué ici :

      http://mapage.noos.fr/emdel/notes.htm#saisie
      http://mapage.noos.fr/emdel/notes.htm#fichiers

      Pose des questions si tu ne comprends pas.
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !

      [C] les getchar scanf et les \n

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown