Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de segmentation

Sujet résolu
    17 mars 2018 à 0:17:00

    .

    -
    Edité par FrançoisDemaret 23 mars 2018 à 13:58:56

    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2018 à 6:01:46

      Débugge ton programme en gardant un œil sur la valeur de ton champ "graine". Il est probable que tu tentes d'écrire dedans alors qu'il est trop petit (peut-être à la ligne 83 ?)
      • Partager sur Facebook
      • Partager sur Twitter
      Maxime EYCHENNE
        17 mars 2018 à 11:20:18

        J'ai utilisé gdb et il me détecte bien une erreur de segmentation, je l'avais déjà utilisé avant de publier ici. Le problème vient de "graine", mais je ne comprends pas, la longueur de la graine est bonne, et je ne fais pas de sortie de tableau. De plus quand je demande dans ma boucle d'afficher la graine caractère par caractère cela fonctionne. Par contre modifier la graine pour mettre un autre caractère cela ne fonctionne pas..
        • Partager sur Facebook
        • Partager sur Twitter
          17 mars 2018 à 12:52:53

          Hello,

          Peut-on voir comment est appelée la fonction initialisation() ? Et également, ce qu'est graine et comment cette variable est déclarée / initialisée ?

          -
          Edité par edgarjacobs 17 mars 2018 à 12:53:15

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            17 mars 2018 à 12:56:42

            Ton pointeur graine ne pointerait pas sur une chaîne en lecture seule des fois ?

            Montre nous l'appel de la fonction initialisation !

            • Partager sur Facebook
            • Partager sur Twitter
              17 mars 2018 à 19:26:10

              int main(){
              
               	LFSR *lfsr = initialisation("01101000010", 8);
              
               
                      int r = operation(lfsr); 
               
              
                      return 0;
              }



              Voila comment j'initialise dans mon main. Je suis obligé de faire comme ça, c'est une consigne. Donc je pense que le problème vient de ma fonction initialisation, mais je ne sais pas du tout où est l'erreur..

              Ou le problème est peut-être dans ma fonction get_graine, ll faudrait que j'établisse une longueur de chaine de caractère de strlen(graine) + 1 ?

              Merci de vos réponses.

              -
              Edité par FrançoisDemaret 17 mars 2018 à 19:45:48

              • Partager sur Facebook
              • Partager sur Twitter
                17 mars 2018 à 20:14:17

                C'est bien ce que je disais. La chaîne que tu envois à initialisation est une chaîne en lecture seul, tu ne peut pas la modifier !

                Si tu veux une chaîne modifiable tu dois créer un tableau de char ex :

                    char str[] = "01101000010";
                
                    LFSR *lfsr = initialisation(str, 8);
                Si tu dois envoyer une chaîne non modifiable, tu devras créer une copie modifiable dans initialisation.
                • Partager sur Facebook
                • Partager sur Twitter
                  17 mars 2018 à 21:20:33

                  Merci pour votre réponse, vous me sauvez, ça a fonctionné :)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Erreur de segmentation

                  × 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