Außerdem muß folgende Zeile geändert werden:
Falsch: tabelle [string[i]] ++;
Richtig: tabelle [ (unsigned char)string[i] ] ++;
Es ist ein CASTen (ein Umtypisieren) notwendig, da für Zeichencodes > 127 - z.B. Umlaut A - ein negativer Index für das Array tabelle in der Funktion (besser Prozedur genannt da sort keinen Rückgabewert hat --> eben "void" sort (char string[])) herauskommt !
Der Wertebereich von char geht von -128 bis 127. Für tabelle[i], also das i (den Index) braucht man aber die Werte 1-255. Null zählt ja nicht, weil es (das Zeichen NUL (=binäre Null)) den Abschluß eines ASCII C Strings bildet. Deswegen braucht man das Element tabelle[0] nicht.
Oder:
tabelle [ ((unsigned char)string[i])-1 ] ++;
schreiben.
Dann stimmen die sogenannten beiden fehlerhaften Zeilen wieder.
|