Ein Lösungsvorschlag zur Übung mit Strings Teil 4.
/*
* String Replace
* ersetzt einen String in einem String, der Such- und Ersetzungs-String
* koennen unterschiedlicher Laenge sein. Der String, in dem die
* Ersetzung stattfindet, muss jedoch groß genug sein um die Ersetzung
* speichern zu koennen.
**/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char * stringReplace(char*, char*, char*);
int main() {
char string[100] = "Die schoenen Sachen im Leben sind umsonst.";
char search[] = "Sachen";
char replace[] = "Dinge";
printf("vorher: \t%s\n", string);
stringReplace(search, replace, string);
printf("nachher: \t%s\n", string);
return 0;
}
char * stringReplace(char *search, char *replace, char *string) {
char *tempString, *searchStart;
int len=0;
// preuefe ob Such-String vorhanden ist
searchStart = strstr(string, search);
if(searchStart == NULL) {
return string;
}
// Speicher reservieren
tempString = (char*) malloc(strlen(string) * sizeof(char));
if(tempString == NULL) {
return NULL;
}
// temporaere Kopie anlegen
strcpy(tempString, string);
// ersten Abschnitt in String setzen
len = searchStart - string;
string[len] = '\0';
// zweiten Abschnitt anhaengen
strcat(string, replace);
// dritten Abschnitt anhaengen
len += strlen(search);
strcat(string, (char*)tempString+len);
// Speicher freigeben
free(tempString);
return string;
}
vorher: Die schoenen Sachen im Leben sind umsonst. nachher: Die schoenen Dinge im Leben sind umsonst.
