Fonction de recherche et de replacement dans une chaine en c

Contenu du snippet

Ben voila c mon premier bout de code poster ici alors ne soyez pas indulgent je ne cherche qu'a
m'ameliorer :) bref fini le blabla maintenant le code :
cette fonction cherche une chaine s2 dans la chaine s1 et si elle la
trouve elle remplace la chaine s2 par la chaine s3.
voila c tout simple.

Source / Exemple :


char    *replace(char *s1, char *s2, char *s3)
{
  char  *retour;
  char  *tmp;
  int   i;
  int   j;

  if (!s1 || !s2 || !s3)
    return (0);
  if (!(tmp = strstr(s1, s2)))
    return (s1);
  i = 0;
  j = 0;
  retour = 0;
  retour = malloc(1);
  while ((tmp = strstr(s1 + i, s2)) != 0)
    {
      if (!(strcmp(s1 + i, tmp)))
        {
          retour = realloc(retour, strlen(retour) + strlen(s3));
          strcpy(retour + j, s3);
          i += strlen(s2);
          j += strlen(s3);
        }
      else
        {
          retour = realloc(retour, strlen(retour) + 1);
          retour[j++] = s1[i++];
        }
    }
  while (s1[i])
    {
      retour = realloc(retour, strlen(retour) + 1);
      retour[j++] = s1[i++];
    }
  retour[j] = 0;
  return (retour);
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.