0/5 (3 avis)
Snippet vu 4 084 fois - Téléchargée 35 fois
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); }
5 janv. 2008 à 22:15
retour = (char*) realloc(retour, strlen(retour) + strlen(s3));
30 juin 2003 à 08:38
Et la taille de s1 et s2 sont constantes ? parceque si oui tu pourrais calculer une fois et pour toute leurs longeurs, au lieu de toujours la recalculer !
7 juin 2003 à 14:03
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.