IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Segfault sur my_strcat()


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Segfault sur my_strcat()
    Bonjour,

    Je suis en train de coder une fonction qui verifie le binaire dans chacun des paths
    je voudrais concatener le path avec l executable et le passer sous access()
    Quand j'utilise my_strcat , j ai "core dumped "
    Voici un extrait du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void    path(char *bin, char *path)
    {
      char  **str;
      int   i;
     
      i = 0;
      str = my_str_to_wordtab(path);
      while (str[i] != NULL)
        {
          str[i] = my_strcat(str[i], "/");
          str[i] = my_strcat(str[i], binaire);
          printf("%s\n", str[i]);
          i++;
        }
    }
    Si quelqu'un a une idee.
    Cordialement,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Quand j'utilise my_strcat , j ai "core dumped "
    (...)
    Si quelqu'un a une idee.
    Ben, sans boule de cristal, ça va être difficile...
    Tu ne nous donnes pas le code de cette fonction, ni celui de my_str_to_wordtab (même si on imagine à quoi elles servent, on ne peut pas deviner comment elles sont codées).

    En outre, si my_strcat a le même fonctionnement que strcat, pourquoi ne pas utiliser cette fonction standard ? et pourquoi écrire ce que j'ai mis en rouge ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    str = my_str_to_wordtab(path);
    while (str[ i ] != NULL)
    {
    str[ i ] = my_strcat(str[ i ], "/");
    str[ i ] = my_strcat(str[ i ], binaire);
    printf("%s\n", str[ i ]);
    i++;
    }
    si la fonction renvoie toujours la valeur du premier paramètre, c'est pas dangereux, mais inutile. Si elle peut renvoyer une autre valeur, la mémoire va fuiter.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Merci de ta reponse,, j ai essayer avec la fonction standart , j ai aussi un core dumped
    J'ai ecris str[i] = ... pour recuperer le resultat dans cette variable et le passer ensute a access() mais il semble que je recupere des caracteres bizarres des fois ...

    Le code de my_str_to_wordtab()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    char    **my_str_wordtab(char *str)
    {
      char  **tab;
      int   i;
      int   b;
      int   a;
     
      b = 0;
      i = 5;
      a = 0;
      if (str[i] == ':')
        while (str[i] == ':')
          i++;
      tab = malloc(sizeof(*tab) * (my_countword(str)));
      while (str[i] != '\n' && str[i] != '\0')
        {
          if (str[i] == ':' || str[i] == '\n')
            {
              while (str[i] == ':')
                i++;
              a = a + 1;
              b = 0;
            }
          tab[a] = malloc(sizeof(**tab) * (my_countchar(str + i)));
          while ((str[i] != ':')  && (str[i] != '\n') && (str[i] != '\0'))
            tab[a][b++] = str[i++];
          tab[a][b] = '\0';
        }
      tab[a + 1] = 0;
      return (tab);
    }
    Merci de ton aide .

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    A priori, la mémoire réservée pour la concaténation n'est pas assez large.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[a] = malloc(sizeof(**tab) * (my_countchar(str + i)));
    (Je suppose que my_countchar renvoie le nombre de caractères de la sous-chaine)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Oui tu as raison, j ai fais quelque tests et je sefg sur strcat
    Il ne me reste plus quá le refaire
    Merci de ton aide
    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Segfault sur un malloc[Contourné]
    Par Alfrodull dans le forum Débuter
    Réponses: 3
    Dernier message: 08/01/2012, 17h27
  2. segfault sur une boost::python::list
    Par psycofdj dans le forum Boost
    Réponses: 1
    Dernier message: 15/10/2008, 00h41
  3. Segfault sur un int?
    Par lguignar dans le forum Débuter
    Réponses: 9
    Dernier message: 18/07/2008, 10h03
  4. Segfault sur un int?
    Par lguignar dans le forum C++
    Réponses: 9
    Dernier message: 18/07/2008, 10h03
  5. Segfault sur contructeur de string
    Par lemmel dans le forum SL & STL
    Réponses: 7
    Dernier message: 02/09/2007, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo