Je ne trouve pas mon segfault

snipetoy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
snipetoy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Donc tu fais match2(s1, s2, 0, 0);
Mais comment a été défini s1 et s2 ?
0
snipetoy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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