C
Ok hab hier mal einen Code geschrieben der auch funktioniert, aber es gibt doch bestimmt Möglichkeiten den speicherverwaltungstechnisch und mit variabler Stringlänge zu verbessern.
char *Change_String(char change_string[32000], char char_old[64], char char_new[64]){
int lenght_old, lenght_new;
int i=0;
char buffer[32000];
char backup[32000];
char *pch;
lenght_old = strlen(char_old);
lenght_new = strlen(char_new);
if((lenght_old == lenght_new) && (lenght_new == 1)){
for(i=0; i < lenght_change_string; i++){
if(change_string[i] == char_old[0]){
change_string[i] = char_new[0];
}
}
}else{
strcpy(backup, change_string);
pch = strtok(backup, char_old);
while (pch != NULL){
if(i == 0){
strcpy(buffer, pch);
}else{
strcat(buffer, pch);
}
strcat(buffer, char_new);
i++;
pch = strtok(NULL, char_old);
}
buffer[strlen(buffer) - lenght_new] = 0;
strcpy(change_string, buffer);
}
return change_string;
}
Wo ich jetzt schon weiß, daß das Teil versagt, wäre, wenn man z.B. einen String hat der aus 20000x Char 'a' besteht und das will man durch Zeichenfolge '12345' ersetzen, da kollidiert ganz klar der Speicher, wie kann ich den Code optimieren, gibt doch bestimmt ein paar Profis hier oder?