string ersetzen

R

Rainier

Hallo zusammen!


Bin etwas verwirrt mit den Funktionen aus der string.h Bibliothek.
Was sollte ich am besten verwenden wenn ich in einem Text nach einer bestimmten Zeichenkette suchen muss und diese durch eine andere Zeichenkette ersetzen soll?
Für die meisten sollte das eine leichte Übung sein aber ich sitz jetzt schon etliche Stunden vorm PC ohne das was richtig funktioniert und wäre deshalb wirklich froh über Tipps (bitte nur C)!
Danke!
 
Nun, meine "C"-Zeit ist schon etwas lange vorüber, inzwischen durch C++ und java etwas "aufgeweicht" ... aber ich mach mal einen Vorschlag:

Code:
#include <string.h>
#include <malloc.h>

/* replace will replace the first 'find' in 's' with 'replace'
 * return: NULL if 'find' is not found
 *         the result string allocated with 'malloc' on success
 */

char* replace(const char* s, const char* find, const char* replace)
{
	const char* p;
	char* ret;

	p = strstr(s, find);

	if (p == NULL)
		return NULL;

	ret = malloc(strlen(s) + strlen(replace) + 1 - strlen(find));

	if (ret == NULL)
		return NULL;

	if (p != s)
		strncpy(ret, s, p-s);

	strcpy(ret + (p-s), replace);
	strcat(ret, p + strlen(find));

	return ret;
}

int main() 
{
	char* s;

	s = replace("Meine Oma backt Kuchen", "backt", "isst");
	if (s != NULL) {
		puts(s);
		free(s);
	}
	s = replace("Meine Oma backt Kuchen", "Kuchen", "Kekse");
	if (s != NULL) {
		puts(s);
		free(s);
	}
	s = replace("Meine Oma backt Kuchen", "Meine", "Deine");
	if (s != NULL) {
		puts(s);
		free(s);
	}
	s = replace("Meine Oma backt Kuchen", "Findet", "nix");
	if (s != NULL) {
		puts("Ooops: should not happen !: ");
		puts(s);
		free(s);
	}
}

Ist sicher optimierungsbedürftig (Argumente prüfen, etc.) , aber es funzt ...

Heiko
 

Ähnliche Themen

Programmieren mit GCC, KDE usw!

wer kann mir anhand eines beispiels mein problem lösen

Zurück
Oben