1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
// Replaces a fragment of a string by another one
char *strstr_rep(char *source, const char *oldfrag, const char *newfrag) {
char *original = source;
printf("INFO --> old fragment: -%s-\n", oldfrag);
printf("INFO --> new fragment: -%s-\n", newfrag);
char temp[1024];
int old_length = strlen(oldfrag);
int i,j,k,l,place=-1;
for (i=0; source[i] && (place == -1); ++i) {
for (j=i,k=0; source[j] == oldfrag[k]; j++,k++) {
if (!oldfrag[k+1]) {
place = i;
}
}
}
if (place != -1) {
// First part of string source is not modified, until place-1
for (j=0; j < place; j++) {
temp[j] = source[j];
}
// Insert newfrag from index place
for (i=0; newfrag[i]; i++,j++) {
temp[j] = newfrag[i];
}
// Last part of string
for (k=place+old_length; source[k]; k++,j++) {
temp[j] = source[k];
}
temp[j] = '\0';
for (i=0; source[i]=temp[i]; i++) { }
}
printf("INFO --> modified string: -%s-\n", original);
return(original);
} |
Partager