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.