Partage
  • Partager sur Facebook
  • Partager sur Twitter

Structure et variable, 2 petit problème

initialisation de structure et une variable vide

Sujet résolu
Anonyme
    21 février 2006 à 17:08:39

    Salut,

    J'ai deux petits problèmes:

    le premier:

    je me suis fait deux fonction, une initialise_joueur et une initialise_bot
    qui servent a initialiser des structures.

    initialise joueur:

    void initialise_joueur(Joueur* donnees)
    {
        donnees->agiliter = 0;
        donnees->argent = 0;
        donnees->arme = 0;
        donnees->armure = 0;
        donnees->classe = 0;
        donnees->defence = 0;
        donnees->experience = 0;
        donnees->force = 0;
        donnees->level = 0;
        donnees->magie = 0;
        donnees->mp_max = 0;
        donnees->nom = "";
        donnees->potion = 0;
        donnees->race = 0;
        donnees->sexe = 0;
        donnees->vie_max = 0;
    }

    initialise_bot:
    void initialise_bot(Bot* donnees)
    {
        donnees->agiliter = 0;
        donnees->defence = 0;
        donnees->force = 0;
        donnees->magie = 0;
        donnees->mp_max = 0;
        donnees->nom = "";
        donnees->vie_max = 0;
    }


    le problème c'est que l'or de la compilation, sa bug au niveau de "donnees->nom = "";" (dans les deux fonction).
    sa me met:
    error: incompatible types in assignment


    j'ai aussi tenté de mettre:
    donnees->nom = {""}; (2 guillemets)
    donnees->nom = ''; (2 apostrophe)
    donnees->nom = {''}; (2 apostrophe)
    mais sa me donne des erreurs.

    J'ai beau chercher je trouve pas d'ou peuvent venir ces erreur.


    Mon deuxième problème c'est qu'il me faudrait une variable vide. Je m'explique:

    j'ai une variable "feminin" de type "char".
    je voudrais que si le joueur est une fille la variable "feminin" vale "e" sinon il faudrait qu'elle sois vide.
    c'est pour faire quelque chose genre sa:

    printf("Tu es un%c %s",feminin, sexe)

    donc c'est sensé écrire soit Tu es une fille, soit Tu es un garçon.

    j'ai essayé de faire: feminin = 0; quand l'utilisateur est un garçon mais la sa écrit Tu es un garçon (2 espaces entre un et garçon)

    j'ai aussi tenter de faire: feminin = ''; (2 apostrophes)
    mais la sa ma mis un message d'erreur
    empty character constant


    j'me suis alors dit qu'il fallait peut-être faire: feminin = ""; (2 guillemets)

    mais la sa me sort: tu est unî garçon
    avec un
    warning: assignment makes integer from pointer without a cast


    Donc j'en appelle a votre aide car je ne sais pu trop quoi faire pour réglé ces 2 problemes.

    Merci d'avance :)


    PS: si sa peut aider voici les 2 structures:
    typedef struct Joueur Joueur;
        struct Joueur
        {
            char nom[100];
            long magie;
            long defence;
            long force;
            long agiliter;
            long sexe;
            long classe;
            long race;
            long level;
            long experience;
            long vie_max;
            long mp_max;
            long argent;
            long armure;
            long arme;
            long potion;
        };


    typedef struct Bot Bot;
        struct Bot
        {
            char nom[100];
            long magie;
            long defence;
            long force;
            long agiliter;
            long vie_max;
            long mp_max;
        };

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 février 2006 à 17:12:21

      va voir tu cote de la fonction strcpy qui se trouve dans string.h
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        21 février 2006 à 17:25:03

        La fonction strcpy permet de copier une chaîne à l'intérieur d'une autre, je ne voit pas trop comment elle pourait m'aider ?
        • Partager sur Facebook
        • Partager sur Twitter
          21 février 2006 à 17:28:16

          ba oui, la tu donnes une valeurs à la chaine de caractères... fait la même chose mais au lieu d'utiliser un =, utilise strcpy.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            21 février 2006 à 17:30:45

            strcpy(&donnees->nom,"salut");
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 février 2006 à 17:38:22

              Donc si j'ai bien compris, je fait strcpy(&donnees->nom,""); pour pouvoir initialisé donnees->nom?

              Ya pas plus simple?
              m'enfin tant que sa marche ^^

              Merci les gars :)

              edit: J'ai aussi essayé de faire sa pour mon deuxième problème mais la sa me met:
              Tu es un garçon (2 espaces entre un et garçon)

              edit2: en faite je suis pas sur que mon 1er problème soit réglé, j'ai un message d'erreur qui s'affiche (mais qui n'enpèche pas la compilation);
              warning: passing arg 1 of `strcpy' from incompatible pointer type
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 février 2006 à 14:38:19

                Tu as mal lu le cours sur les chaînes: les trucs du genre
                truc = "";
                c'est que à l'initialisation, après c'est
                sprintf(chaine, "");
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  23 février 2006 à 16:49:08

                  Effectivement, j'avais oublié ce détail :p
                  mais sa ne règle pas mon problème, sa affiche encore 2 espaces :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    24 février 2006 à 8:01:47

                    Euh... là je comprends pas le truc avec les espaces par contre
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 février 2006 à 15:14:35

                      Ben enfaite quand j'ai une variable char qui vaut "" quand je l'affiche entre 2 mots elle vaut " " (1 espace).

                      Il doit surment existé une méthode pour "vidé" une variable pour que quand on l'affiche elle ne fasse rien. m'enfin jvé continuer à chercher. si je trouve un moyen je vous préviens.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        25 février 2006 à 9:20:20

                        Essaye en faisant chaine[0] = '\0'
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          25 février 2006 à 15:15:53

                          Enfete ce que je veut c'est une variable qui valle "e" quand l'utilisateur est une fille et qui valle rien quand c'est un garçon.

                          le cas fille est défini comme sa:

                          if (perso->sexe != 1)
                          {
                              sprintf(chaine, "e");
                          }
                          //sinon on fais rien


                          j'ai aussi eu l'idée de rajouter


                          else
                          {
                              sprintf(chaine, "\0");
                          }


                          mais sa faisait pareil


                          j'ai essayé:
                          char chaine[] = "\0"; //la sa m'affiche ¥ (le symbole yen?) dans tout les cas
                          char chaine[0] = "\0"; //la sa m'affiche ░ (un caré gris) dans tout les cas
                          char chaine[0] = ''; // error: invalid initializer
                          char chaine[0] = '\0'; //error: invalid initializer
                          char chaine[] = '\0'; //error: invalid initializer
                          char chaine = 0; //dans le cas fille sa marche mais dans le cas garçon sa met un espace.


                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 février 2006 à 15:22:01

                            C'est logique les deux espace. Quand feminin est Ok il mets un e. Mais quand feminim est pas bon ben il mets du vide donc sa fait un espace.
                            Tu peux utiliser une condition mais sa va faire sale. Je vois pas comment regler sa proprement.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              25 février 2006 à 17:00:46

                              Ha ok.
                              Dommage.

                              Merci a tous pour l'aide :)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Structure et variable, 2 petit problème

                              × 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