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 :

pb Fonction rejouer


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 14
    Points
    14
    Par défaut pb Fonction rejouer
    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
    char lireCaractere()
    {
        char caractere = 0;
     
        caractere = getchar(); // On lit le premier caractère
        caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà
     
        // On lit les autres caractères mémorisés un à un jusqu'à l'\n
        while (getchar() != '\n') ;
     
        return caractere; // On retourne le premier caractère qu'on a lu
    }
     
     
    void rejouer(long *pJouer)
    {
        char ouiNon;
        char oui = "o";
        printf("Voulez-vous rejouer ??? (o/n)");
        ouiNon = lireCaractere();
        printf("%s", ouiNon);
        if (ouiNon == "o")
        *pJouer = 1;
    }
    Bonjour, j'aimerai créer une fonction rejouer, qui met la variable jouer a 1 lorsque l'utilisateur tape o, mais ma fonction plante... ourriez-vous m'aider ???
    D'avance merci.

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,

    Oh my god

    Les constantes litterales pour des caracteres sont mis entre apostrophes et non entre guillemets.
    %s est le specificateur de format pour les chaines, et printf attend l'adresse du premier caractere d'une chaine à afficher. Ce que tu lui passe c'est un entier de 0 à 255 => certainement pas une adresse valide et encore moins une adresse vers une chaine interessante pour l'algorithme.
    Comme dirait Emdel, un compilateur bien configuré aurait averti que l'argument du printf n'était pas bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void rejouer(long *pJouer)
    {
    char ouiNon;
    /* char oui = "o";  nié? */
    printf("Voulez-vous rejouer ??? (o/n) ");
    ouiNon = lireCaractere();
    printf("%c\n", ouiNon);
    if (ouiNon == 'o')
    *pJouer = 1;
    }

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 625
    Points : 30 668
    Points
    30 668
    Par défaut
    Salut,

    En plus, il y a un sérieux problème de logique...

    Réfléchissons un peu...

    Dans la fonction lireCaractere, tu force le premier caractère en majuscule (grace à toupper)...

    Et, dans la fonction rejouer, tu testes si le caractère renvoyé par lireCaractere est ... égal à o (minuscule)... Cherchez l'erreur

    Sans compter le fait que, o/O devrait faire rejouer, n/N devrait faire arreter le jeu, mais les 58 autres caractères (les 10 chiffres et les 24 lettres restantes, en minuscule et en majuscules)

    Ne te semblerait-il pas normal de demander au joueur de faire un choix correct
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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