Je ne trouve pas mon segfault

Fermé
snipetoy Messages postés 4 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 12 octobre 2014 - Modifié par KX le 12/10/2014 à 18:27
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 oct. 2014 à 23:58
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
12 oct. 2014 à 19:28
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 vendredi 23 mai 2014 Statut Membre Dernière intervention 12 octobre 2014
12 oct. 2014 à 23:13
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
12 oct. 2014 à 23:37
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 vendredi 23 mai 2014 Statut Membre Dernière intervention 12 octobre 2014
12 oct. 2014 à 23:45
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
Modifié par fiddy le 12/10/2014 à 23:59
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