000
19.04.2005, 15:21 Uhr
CHris08156
|
Ich suche eine string map function:
Code: |
char *string = new char; string = "This is a simple string"; char *what = new char; what = "simple"; char *with = new char; with = "new";
string_map (string, what, with); cout << string << endl;
|
rauskommen sollte: "This is a new string"
für die funktion habe ich folgenden Quelltext:
Code: |
int string_first(char *string, char *what) { char *pch = strstr (string, what); int i = 0; while (string+i != pch && i < strlen(string)) { i++; } if (i == strlen(string) ) { return -1; } else { return i; } }
int string_map (char *string ,char *what, char *with) { char *pch; pch = strstr (string,what); int first = string_first(string, pch);
char *out = new char[first]; strncpy(out, string, first); out[first] = '\0'; strcat(out, with);
int len = strlen(string)-first-strlen(what)+1; char *rest = new char[len]; rest = string+first+strlen(what);
strcat(out, rest);
string = out; return 0; }
|
Wenn der neue string (what) nicht länger ist als der zu ersetzende string (with) funktioiniert es. aber sobald what länger ist als with, gibt es einen Programmabsturz. Dieser Post wurde am 19.04.2005 um 15:52 Uhr von CHris08156 editiert. |