# c Teilstring im String suchen und ersetzen



## Luca Brassi (26. Juli 2005)

Hallo,

ich hab da ein kleines Problem mit dem Suchen und Ersetzen von Teilstrings innerhalb eines Strings.

Ich möchte im String "message" den Teilstrings "blah"  ersetzen durch "12345" und den Teilstring "bloeh" ersetzen durch "67890".

Dazu habe ich folgenden Ansatz der leider nicht .

char *ptr
char message[100] ="ein dummes blah und bloeh beispiel"

while ((ptr=strstr(message,"blah"))!=NULL)*ptr = "12345";
while ((ptr=strstr(message,"bloeh"))!=NULL)*ptr = "67890";

printf("%s\n",message);


Hoffe Ihr könnt mir da weiterhelfen.


----------



## deepthroat (26. Juli 2005)

Hi.

Das kann so natürlich nicht funktionieren. Um einen Substring in einem String durch ein anderes Wort ungleicher Größe zu ersetzen muß man alle Buchstaben nach dem zu ersetzenden Substring so weit nach hinten (bzw. vorne) verschieben/kopieren, bis der Platz genau für den Ersatzstring ausreicht.

Um also in deinem String "ein dummes blah und bloeh beispiel", das Teilwort "blah" durch "12345" zu ersetzen muß man den Teilstring " und bloeh beispiel" um 2 Stellen nach rechts schieben:

"ein dummes blah__ und bloeh beispiel"

Dann kann man das  Ersatzwort einfach an der richtigen Stelle drüberschreiben:

"ein dummes 12345 und bloeh beispiel"

Das Verschieben kannst du z.B. mit der Funktion memmove bewerkstelligen. 

Alternativ kannst du auch eine zusätzliche Variable benutzen. In diese kopierst du (strncpy) erstmal nur den ersten Teilstring *vor* dem zu ersetzenden Wort. Dann kopierst du den Ersatzstring hinein und zum Schluß den Rest des Strings *hinter* dem zu ersetzenden Wort. Letztendlich musst du nur den Originalstring mit dem String deiner temp. Variablen überschreiben.


----------

