string durch einen anderen ersetzen
-
Hallo zusammen!
Könntet ihr mir sagen, wie ich einen String in einem existierenden String suche und dann durch einen anderen ersetze?Danke
trojan
-
Hi.
Das sollte sein, was du suchst:char *strstr (const char *, const char *);
-
@trojan, schau dir mal meine Beispielimplementierung einer Funktion zum Ersetzen von Strings an. Für alle Kritiker: Klar man kann das besser machen...ist halt nur als Beispiel anzusehen
char *replace( char *pSrc, char *pSrch, char *pRepl ) { size_t nSrc; size_t nSrch; size_t nRepl; char *pFound; char *pRes; if ( !pSrc || !pSrch || !pRepl ) return NULL; nSrch = strlen( pSrch ); nRepl = strlen( pRepl ); pFound = strstr( pSrc, pSrch ); if ( pFound ) { if ( nSrch == nRepl ) strncpy( pFound, pRepl, nRepl ); else { nSrc = strlen( pSrc ); pRes = malloc( nSrc -nSrch +nRepl +1 ); if ( pRes ) { pRes[0] = '\0'; strncat( pRes, pSrc, pFound -pSrc ); strncat( pRes, pRepl, nRepl ); strcat( pRes, pFound +nSrch ); free( pSrc ); }; }; }; return pSrc; };
-
Danke für die Codes! Werde es direkt mal ausprobieren!
-
Hallo Hermann
Danke für deine Funktion, aber es steckt ein kleiner Wurm drin:
if ( pRes ) { pRes[0] = '\0'; strncat( pRes, pSrc, pFound -pSrc ); strncat( pRes, pRepl, nRepl ); strcat( pRes, pFound +nSrch ); free( pSrc ); };
müsste besser so aussehen:
if ( pRes ) { pRes[0] = '\0'; strncat( pRes, pSrc, pFound -pSrc ); strncat( pRes, pRepl, nRepl ); strcat( pRes, pFound +nSrch ); free( pSrc ); return pRes; };
Andernfalls löscht du nur den Quellstring, versuchst dann aber - nachdem du aus den IF verschachtelungen raus bist - diesen zurück zu geben.
Gruß
Marco