000
26.04.2004, 15:02 Uhr
~Theo_aus_Lodz
Gast
|
Ich schreibe gerade an einer Fkt., welche einen String durch einen anderen ersetzen soll. Hatte diese auch schon soweit fertig. Allerding liess sie nur einen Durchlauf zu. Ich möchte noch eine Schleife einbauen, damit wirklich alle Strings ersetzt werden und nicht nur der erste. Das war mein Code bisher: FFFAAAALLLSSSSCCCCHHHH!!!!!
C++: |
char* ersetzen(const char* re, const char* repl, const char* in, char* buffer) {
char *pdest; pdest= strstr(in,re); char* ptr;
while(pdest) {
if (!re || !repl || !in || !buffer) return buffer=NULL; ptr=strstr(in, re); if(!ptr) { strcpy(buffer, in); return buffer; } *buffer=0; if ((ptr!=in) && (pdest)){ strncpy(buffer, in, ptr-in); buffer[ptr-in]=0; // damit ich strcat benuzten kann } strcat(buffer, repl); ptr+=strlen(re); strcat(buffer, ptr);
pdest = 1+(strstr(in,re)); } return buffer; }
|
Das funzt aber nicht. Ich habe auch schon Vorschriften, wie ich es umsetzen kann, leider komme ich aber damit nicht klar... Kann mir jemand helfen? Hier die Anweisungen anhand eines billigen Bsp:
Code: |
Text = "hallihallo" Suchstring = "ll" Ersetzstring = "pp" Buffer = ""
1. Suchstring wird an Position 3 (Index 2) gefunden 2. (Schleifenbeginn) Alles vor dem Suchstring in Text wird nach Buffer kopiert -> Buffer = "ha" 3. Danach kommt Ersetzstring hinzu -> Buffer = "happ" 4. Die Position wird um die Länge von Suchstring erhöht -> Pos = 5 5. Die Position wird in alter Position gemerkt 6. Der Suchstring wird nun ab Position gesucht und an Position 8 in Text gefunden 7. Alles zwischen alter Position und Position wird an Buffer drangehängt -> Buffer = "happiha" 8. siehe 3. -> Buffer = "happihapp" 9. siehe 4. -> Pos = 10 10. siehe 5. 11. Wieder wird gesucht nach dem Suchstring, diesmal wird er aber nicht gefunden (Schleifenende) 12. Der Rest von Text wird an Buffer angehängt -> Buffer = "happihappo"
|
So, jetzt muss ich das für meine Fkt. umsetzen. Wie gehts? Bitte um Hilfe! |