Zeichen größer 0x80 einlesen

Huemler

Mitglied
Hallo ich habe folgendes Problem und zwar lese ich über getch() Zeichen ein, die ich anschließend in einem buffer speichere.
Jetzt ist mir aufgefallen, dass wenn der Wert des Zeichens größer 0x7F ist also größer 127, dann wird das 8. Bit nicht berücksichtigt und ein falscher Wert wird gespeichert.
Jetzt habe ich gerade gelesen, das getc,getchar,getch..... allgemein ohne Vorzeichen zuzückgeben.
Was für ein Weg gibt es denn dann, Zeichen größer 0x80 einzulesen?

Gruß
Huemler
 
Hallo,

ich kann dein Problem gerade nicht nachvollziehen.
C:
#include <stdio.h>

int main()
{
    int c = getchar();
    printf("0x%x", c);

    return 0;
}
Beispielausführung:
Code:
ö
0x94

Grüße,
Matthias
 
Wie kommst du auf 0x94?

In meiner ANSI Tabelle hat das ö 0xF6
und in meinem Fall kommt halt kein 0xF6 sondern 0x76 raus.
Ist wieder wie beschrieben bei mir wird einfach das 8.Bit nicht beachtet irgendwie.
 
Wie kommst du auf 0x94?

In meiner ANSI Tabelle hat das ö 0xF6
Das kommt natürlich ganz auf die verwendete Codepage an. In meinem Fall habe ich das Programm in der Eingabeaufforderung von Windows XP getestet, welches hier mit der Codepage 850 arbeitet.

und in meinem Fall kommt halt kein 0xF6 sondern 0x76 raus.
Ist wieder wie beschrieben bei mir wird einfach das 8.Bit nicht beachtet irgendwie.
Auf welcher Platform? Wie sieht die relevante Stelle des Quellcodes aus?

Grüße,
Matthias
 
Ohje ich merk gerade, ich glaub das ist ein spezielleres Problem bei mir.
Dachte es wär ein allgemeines C-Problem, aber ich glaub es hat doch etwas mit meinem Linux Image zu tun.

Auf meinem Host PC arbeite ich mit einer Knoppix Festplatteninstallation.
Hier funktioniert es auch wenn ich das kleine Beispielprogramm von dir laufen lasse.

Auf meinem Board arbeite ich jedoch mit einem Linux Image (PTXdist) und hier habe ich auch die Schnittstelle mit POSIX programmiert.
Und wenn ich das Beispiel hier laufen lasse dann tritt der Fehler auf, dass das 8.Bit "weggeschnitten" wird.
Also denke ich das es an den gesetzten POSIX Flags leigen muss.
Weil allgemein sieht es ja so aus, das es wirklich keine Probleme eigentlich damit gibt, wie du schon geschrieben hast.

Gruß
Huemler
 
Zurück