Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifier un char* dans un sous-programme

    18 mars 2018 à 19:51:14

    Bonjour je souhaite modifier une chaine de caractère dans un sous programme (de type int).

    Malheureusement ca ne marche pas.

    Pourriez vous m'aider ? 

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2018 à 19:57:11

      Salut !

      Montre nous le bout de code que tu as fait.

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        18 mars 2018 à 20:07:01

        C'est assez complexe car mon programme a la vocation d'etre executé par un autre programme que le mien.

        mais voici quelque bout du code :

        int main()

        {

            char *action_name="ACTION"; //le char dont j'ai besoin de changer

        }

        // sous programme qui change le char*

        int check0 (int i,int j,sCase case_tab[MAX_ANT][9],sEtat etat_tab[MAX_ANT], int choix_act, char action_name[])

        {

            if(case_tab[i][1].food!=0)

            {

            }

            else

            {

                choix_act=2;

                action_name="MOVE\0";

            }

        return choix_act;

        }

        //Voici le sous programme qui utilise le char* apres modif

        void action(int i,char *action_name[])

        {

            int etat_action;

            printf("ANT %d %s\n",i,action_name);

            fflush(stdout);

            scanf("%d",&etat_action);

        }

        Mon probleme etant que le char reste "ACTION"

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2018 à 20:15:55

          Salut,

          Déclarer ainsi, c'est créer une constante, donc tu ne peux évidemment pas modifier le contenu. Il te faut soit une table soit une allocation.

          Bonne continuation.

          • Partager sur Facebook
          • Partager sur Twitter

          Bonhomme !! | Jeu de plateforme : Prototype.

            18 mars 2018 à 20:18:45

            Bonjour,

            pourrais tu être plus explicite ?

            merci

            -
            Edité par AR2 18 mars 2018 à 20:19:11

            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2018 à 20:43:53

              drx a écrit:

              Déclarer ainsi, c'est créer une constante, donc tu ne peux évidemment pas modifier le contenu. 

              Si tu regardes bien le code (ok, il est très mal présenté), il ne modifie pas le contenu pointé mais l'adresse du pointeur.

              @AR2

              Pour modifier une variable passé en paramètre d'une fonction, il faut passer son adresse à la fonction (c'est comme scanf qui permet de modifier les variables).

              PS : Utilises le bouton code </> pour poster ton code sur le forum !



              -
              Edité par rouloude 18 mars 2018 à 20:44:45

              • Partager sur Facebook
              • Partager sur Twitter
                18 mars 2018 à 23:07:52

                Je me suis toujours demandé pourquoi un code comme ça compilait, et n'imposait pas de mettre un const 

                char* s="truc";

                Sinon, fait une copie avec strcpy dans un nouveau tableau pour que ce soit modifiable.

                -
                Edité par Fvirtman 18 mars 2018 à 23:09:00

                • Partager sur Facebook
                • Partager sur Twitter

                Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                  19 mars 2018 à 22:01:31

                  Fvirtman a écrit:

                  Je me suis toujours demandé pourquoi un code comme ça compilait, et n'imposait pas de mettre un const 

                  char* s="truc";
                  Car le const n'est apparu que bien après que des millions de lignes comme celle-ci ont été écrites.
                  Même en C++ ce n'était pas obligatoire, c'est dire!

                  -
                  Edité par Marc Mongenet 19 mars 2018 à 22:01:49

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 mars 2018 à 9:52:14

                    Je vois, on trimbale des trucs non cohérents, mais pour des raisons de compatibilité. Merci pour l'information. 

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                      20 mars 2018 à 10:36:51

                      Fvirtman a écrit:

                      Je me suis toujours demandé pourquoi un code comme ça compilait, et n'imposait pas de mettre un const 

                      char* s="truc";

                      Sinon, fait une copie avec strcpy dans un nouveau tableau pour que ce soit modifiable.

                      -
                      Edité par Fvirtman 18 mars 2018 à 23:09:00


                      Pour le compilateur, char* et char[] sont équivalents.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 mars 2018 à 11:17:52

                        Personne n'a dit le contraire.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 mars 2018 à 12:30:16

                          BisouCaillou a écrit:

                          Pour le compilateur, char* et char[] sont équivalents.

                          Dans le cas général, non.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Modifier un char* dans un sous-programme

                          × 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