Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Passer des structures dans des fonctions

Possible avec des tableaux ?

Sujet résolu
    25 février 2006 à 15:50:38

    Bonjour,

    J'ai créé une structure, jusque la pas de problème, même plutôt simple.
    Ma structure s'appelle Personne, et grâce à elle, j'ai créé la variable joueur[3]. Seulement lorsque je passe cette variable dans ma fonction pour les remettre à zéro, j'ai des p'tits messages d'erreurs pas plaisant.

    Je vous montre :
    ifiroth@Benoit:~$ gcc -o Prog_C/plusoumoins Prog_C/plusoumoins.c
    Prog_C/plusoumoins.c: In function ‘main’:
    Prog_C/plusoumoins.c:21: attention : passing argument 1 of ‘remiseZeroStatut’ from incompatible pointer type
    Prog_C/plusoumoins.c:93: attention : passing argument 1 of ‘remiseZeroStatut’ from incompatible pointer type
    Prog_C/plusoumoins.c: In function ‘remiseZeroStatut’:
    Prog_C/plusoumoins.c:575: erreur: incompatible types in assignment
    Prog_C/plusoumoins.c:576: erreur: incompatible types in assignment
    Prog_C/plusoumoins.c:577: erreur: incompatible types in assignment
    ifiroth@Benoit:~$


    (eh oui, je compile sous linux :p )

    Voilà les lignes intéressantes :

    Déclaration de la fonction dans plusoumoins.h
    void remiseZeroStatut(Personne joueur[]);


    Appel de la fonction dans plusoumoins.c (ligne 21 et 93)
    remiseZeroStatut(joueur);


    Et enfin, la fonction (ligne 571 - 587)
    void remiseZeroStatut(Personne joueur[])
    {
            long i;
           
            strcpy(joueur[0].pseudo, "Joueur1");
            strcpy(joueur[1].pseudo, "Joueur2");
            strcpy(joueur[2].pseudo, "Michelle");
           
            for (i = 0; i < 3; i++);
            {
                    joueur[i].score1 = 0;
                    joueur[i].score2 = 0;
                    joueur[i].score3 = 0;
                    joueur[i].score4 = 0;
                    joueur[i].score5 = 0;
            }
    }

    (les lignes citées par le message d'erreur sont celles ou je définit les 3 pseudos)

    Merci à tous ceux qui pourront m'aider.

    EDIT : Sujet résolu, post corrigé
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 février 2006 à 16:10:34

      Je voudrais savoir, tu veux créer un pointeur sur un tableau de structure ou un tableau de pointeur sur des structures ?

      Un pointeur sur un tableau ça se déclare avec des ( ) pour des questions de priorités : Personne (*joueur)[3] mais ça s'utilise rarement car un tableau est déja un pointeur.

      Ensuite, tu peux pas ctocker une chaîne comme ça, il faut utiliser strcpy (destination, source);.

      Dis nous exactement ce que tu veux faire, pourquoi un pointeur sur tableau ?
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2006 à 16:21:28

        ca commence pas plutot par
        joueur[0]
        ?
        • Partager sur Facebook
        • Partager sur Twitter
          26 février 2006 à 11:46:26

          En fait, j'ai créer une sctructure. De cette structure je crée 3 variables grâce à un tableau.
          Personnes Joueur[3]

          J'ai créer une fonction qui permettrait d'initialiser mes variables. Par défaut, les variables contiennent, déjà des données. Par exemple les pseudos.

          Donc ma fonction prend comme arguments mon tableau de variables pour en modifier les données.

          @ C@rn@GE59 : C'est exact. J'corrige déjà ça :p
          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2006 à 12:02:22

            Faudrai que tu revoi comment envoié un tableau a une fonction ca d'aiderai beaucoup.

            Bon parce que je suis gentil je te donne les deux posibilité


            void bidul(Personne *tableau)
            // ou ....
            void bidul(Personne tableau[])
            • Partager sur Facebook
            • Partager sur Twitter
              26 février 2006 à 13:32:44

              c'est bon j'ai trouvé grace à une recherche sur le net. C'est qd j'initialiser mes pseudos, il fallait que je le fasse avec la fonction strcpy().

              Merci à vous pcq vous m'avez trouvé d'autres erreures et maintenant mon code fonctionne à merveille !

              :)
              • Partager sur Facebook
              • Partager sur Twitter

              [C] Passer des structures dans des fonctions

              × 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