Suche
Suche Menü

Lösung Teil 4 – String Replace

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.