Einzelnen Beitrag anzeigen
Alt 23.11.2003, 16:47   #7
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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.
kikakater ist offline   Mit Zitat antworten