Je ne trouve pas mon segfault

Bonjour j'essaye de crée une fonction dont le but et de savoir si deux chaine match mon programme ma l'air bon mais il y a u segfault que je trouve pas donc moi mon code :

int     match2(char *s1, char *s2, int a, int i)
{
  my_putchar('t');
  while (s1[i + a] == s2[i] || s2[i] == '*')
    {
      my_putchar('a');
      if (s1[i + a] == s2[i])
          i = i + 1;
      if (s2[i] == '*')
        {
          my_putchar('b');
          while (s2[i + 1] != s1[i + a] && s2[i + 1] != '*')
            {
              if (s1[i + a] == '\0')
                {
                  return (0);
                }
              a = a + 1;
            }
          a = a - 1;
        }
      i = i + 1;
      if (s1[i + a] == '\0' && s2[i] == s1[i + a - 1])
        {
          return (1);
        }
    }
  return (0);
}


J'ai rajouté des putchars pour voir jusqu'a ou sa allez et sa m'affiche le t mais pas le a donc je pense que c'est dans mon while .

2 réponses

  1. Contributeur
    Bonjour,
    mon programme ma l'air bon mais il y a u segfault
    Si ya un segfault, c'est que le programme n'est pas bon :-p.

    my_putchar()
    Pourquoi ne pas utiliser putchar() qui est portable ? C'est toi qui as codé cette fonction ?

    On aurait besoin aussi de la façon dont tu appelles la fonction.
    Bien sûr, si tu utilises une ou des variables dans l'appel, il faut nous montrer comment elles ont été définies.

    Cdlt,
    1
    1. D'abord merci de ton aide ,ensuite non je ne l'ai pas codé seul j'étais avec un ami ,j'ai utilisé my_putchar car je l'avais sous la main ;) J'ai une partie match aussi ou je l'ai définis je peut le mettre aussi :
      int match(char *s1, char *s2)
      {
      int i;
      int a;

      i = 0;
      a = 0;
      match2(s1, s2, a, i);
      }

      Cdlt.
      0
      1. Contributeur
        Donc tu fais match2(s1, s2, 0, 0);
        Mais comment a été défini s1 et s2 ?
        0
      2. On me la donner en consigne de base dans l'exercice je peut pas le modifié cela correspot a une chaine de characteres chacune.
        0
      3. Contributeur
        Je ne t'ai pas demandé de modifier. Je disais juste l'équivalent.
        Je te demande juste comment a été défini s1 et s2...
        Tu as bien une fonction qui appelle : match(..., ...)...
        0