Calocybe: strings bearbeiten

Beitrag lesen

Hi Michael!

Jetzt hast Du aber an meinem Stolz gekratzt! ;-) Guck, so geht das in C:

void xchgchar(char * string, char old, char new) {
        while (*string)
            if (*string == old) *string++ = new;
    }
(Jetzt mal so hingehackt, nicht ueberprueft.)
Na, was ist jetzt einfacher? ;-) Allerdings laesst sich Deine Funktion auch noch um einiges vereinfachen. Wer braucht schon Fehlerpruefungen? Wer sich nicht sicher ist, ob er die Funktion aufrufen soll, der soll es gefaelligst lassen. Abgesehen davon muesste er in Deinem Fall den Returnwert ja auch noch pruefen, da kann er aber gleich vorher die Fehlerbedingungen ausschliessen.

Timos Methode hat auch was fuer sich, wenn sie durch die Rekursion auch ziemlich langsam sein duerfte. Vor allem kann man bei ihm nicht nur einzelne Zeichen ersetzen, sondern ganze Zeichenketten. Auch Deine Funktion, Michael, laesst sich leicht dahingehend abaendern. Und das ist das Problem bei C: Das kennt keine Strings, sondern nur Arrays of char, wobei ein char einfach ein Byte ist. Gerade deshalb laesst es sich auf einzelne Zeichen sehr leicht zugreifen, sobald man aber echtes Stringhandling machen will, braucht man erstmal ein paar Zusatzfunktionen, die man schreiben muss. Aber auf einzelne Zeichen kann man eben viel schoener zugreifen, wobei das in der obigen Funktion gar nicht so deutlich ist. Normalerweise macht man das mit string[index]. Als ich mit JS angefangen hatte, bin ich da auch erstmal auf die Schnauze geflogen, weil ich erwartet hatte, dass das da auch geht.

Calocybe