Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb de pointeur sur char

Sujet résolu
    18 mai 2006 à 14:51:57

    Salut

    J'ai commencer à suivre les cours de m@teo sur le c/c++. J'ai tou lu de AàZ et je me suis amusé a faire des trucs.
    Le problème c'est que je veux traiter une chaine de caractère dans une fonction voisinne. Je fais tout ce que m@teo a dit mais sans succes. Quand il change la variable race dans la fonction choisirRace() et que je lui demande de faire un printf de sa dans caracteristiqueJoueur() et ben sa marche pas.

    Est-ce que qq1 pourrais maider s.v.p.

    Voici le code

    int main(int argc, char* argv[])
    {
        caracteristiqueJoueur();

        return 1;
    }

    void caracteristiqueJoueur()
    {
        FILE* caracJoueur = NULL;
        char    nom[20], race[] = "Orc";

        caracJoueur = fopen("joueur.txt",chmodCaracJoueur);

        if( caracJoueur != NULL)
        {
                printf("L'ouverture s'est bien passé\n\n Votre nom : ");
                scanf("%s", nom);
                choisirRace(&race);
                printf("\n%s", race);
                fprintf(caracJoueur,"Nom=%s et Race=%s", nom, race);
                fclose(caracJoueur);
        }
        else
        {
            printf("L'ouverture du fichier n'as pas marcher");
        }
    }

    void choisirRace(long* addRace)
    {
        char test[] = "Humain";
        printf("%ld", addRace);
        *addRace = test;
        printf("\n%s", *addRace);
        return 1;
    }


    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2006 à 15:04:43

      Utilise les balises de code et l'indentation pour que ton code soit plus lisible.
      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2006 à 15:09:38

        bé déjà on dirait que ta variable race qui est un char* dans la premiere fonction, devient un long* addrace dans la fonction suivante. ça doit donner des chiffres non ?
        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2006 à 15:12:08

          Salut mrdus

          je ne suis pas sure parce que d'après moi quand on fait un pointeur il n'enregistre pas ce qu'il y a dans la variable mais bien l'addresse donc sa doit être un long a mon avis.
          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2006 à 15:22:44

            Si tu veux un pointeur sur char, fais un char *, pas un long * et c'est strcpy pour copier des chaînes.
            • Partager sur Facebook
            • Partager sur Twitter
              18 mai 2006 à 15:26:38

              Merci a vous tous...

              c'est bien vrai qu'il fallait mettre un char a la place de long....mais est-ce que qq1 pourrait m'expliquer pourquoi.....parce que dans ma petite tête je croyait qu'il fallait que sa soit un long :-°

              Merci
              • Partager sur Facebook
              • Partager sur Twitter
                18 mai 2006 à 15:28:35

                Bah, explique pourquoi tu pensais que ça devait être un long déjà parce que je ne saisis pas la raison. :p
                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2006 à 15:31:22

                  Ok :D

                  ba parce que l'addresse d'une variable est de type long (d'après de ce que j'ai lu....mais je début et les pointeur c'est pas mon fort o_O ). Donc je croyait que quand on voulait enregistrer une addresse d'une variable via un pointeur ba qu'il devait toujours être de type long....
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 mai 2006 à 16:27:17

                    Citation : z8fox

                    ba parce que l'addresse d'une variable est de type long (d'après de ce que j'ai lu....


                    Tu as mal lu. Une adresse est un entier. La variable faite pour contenir cet entier est un pointeur. Soit anonyme : void *p, soit typé : T *p.

                    Mettre une adresse dans un long est certes techniquement possible, mais nécessite un cast et n'est pas portable. De plus, c'est sans intérêt car, comme déjà expliqué, les pointeurs sont faits pour ça.

                    Citation : z8fox


                    mais je début et les pointeur c'est pas mon fort o_O ). Donc je croyait que quand on voulait enregistrer une addresse d'une variable via un pointeur ba qu'il devait toujours être de type long....


                    Ben non...

                    http://mapage.noos.fr/emdel/notes.htm#pointeurs

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !

                    Pb de pointeur sur char

                    × 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