Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bug ? sur un scanf d'une adresse

Sujet résolu
    21 juin 2019 à 15:30:22

    Bonjour bonjour j'étais entrain de faire un petit exercice du cours C mais j'ai un problème pour un tableau de structure censé demander des informations a l'utilisateur mais voila quand je met un chiffre dans une chaîne de caractère pour donner l'adresse le programme saute le scanf suivant ! Comment faire pour ne pas avoir ce problème sans pour autant demander a l'utilisateur de mettre neuf au lieu de 9 ?Voici le programme pour l'instant :

    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
    
    int main(int argc,char* argv[])
    {
        Personne joueurs[2];
        int i=1;
        printf("Bonjour Joueur %d je vais vous prendre quelques informations :\n",i);
        printf("quel est ton prenom ? ");
        scanf("%s",&joueurs[i].prenom);
        printf("quel est ton nom ? ");
        scanf("%s",&joueurs[i].nom);
        printf("quel est ton age ? ");
        scanf("%d",&joueurs[i].age);
        printf("quel est ton adresse ? ");
        scanf("%s",&joueurs[i].adresse);
        printf("est-tu un garcon ? (1=oui 0=non) ");
        scanf("%d",&joueurs[i].garcon);
        printf("c'est fini !");
    
        return 0;
    }
    

    et voici le fichier main.h (je sais que c'est déconseiller d'en faire un mais le programme est trop petit pour lui donner un autre nom)

    typedef struct Personne Personne;
    struct Personne
    {
        char prenom[100];
        char nom[100];
        char adresse[1000];
    
        int garcon; //boléen
        int age;
    };
    

    merci de vos réponses 

    modif: si je triggered le programme il passe tout les prochains scanf

    -
    Edité par Naitchi 21 juin 2019 à 17:19:38

    • Partager sur Facebook
    • Partager sur Twitter
      21 juin 2019 à 15:37:29

      Bonjour, je suis aussi débutant et j'en suis au même niveau que vous, j'ai aussi un problème sur cet exercice aussi, je crois que l'erreur vient de "&", il y'en a pas (Pour savoir pourquoi, je pense que c'est marqué dans le cours), sinon je vois qu'il manque un boucle pour le 2eme joueur.

      Sinon tu peux regarder mon problème si tu veux : https://openclassrooms.com/forum/sujet/exercice-du-cours-probleme Cela ne fait même pas 24h que j'ai posté ce sujet

      • Partager sur Facebook
      • Partager sur Twitter
        21 juin 2019 à 17:40:35

        merci c'était ça (j'ai pas compris pourquoi par contre) je t'ai envoyer un message OP pour ton problème
        • Partager sur Facebook
        • Partager sur Twitter
          21 juin 2019 à 17:48:42

          & veut dire "adresse de"

          C'est parce que scanf attend l'adresse de la variable qu'il doit affecter.

          A savoir que le nom d'un tableau sans les crochets renvoi l'adresse de son premier élément. dans ce cas il ne faut pas mettre l'opérateur &

          • Partager sur Facebook
          • Partager sur Twitter
            21 juin 2019 à 22:46:11

            merci pour ce complément d'information ! <3 je viens malheureusement de trouver un autre bug :( je m'explique : a chaque espace dans l'adresse que je rentre c'est un scanf de remplie et je me retrouve donc avec un joueur 2 qui s'appelle rue des et qui a 9849654 ans. Peut-on y remédier ou est-ce vouez a l’échec ?

            -
            Edité par Naitchi 21 juin 2019 à 23:18:58

            • Partager sur Facebook
            • Partager sur Twitter

            Bug ? sur un scanf d'une adresse

            × 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