alle ASCII-Zeichen zurückwandeln in Code

Diefenbaker

Mitglied
Hallo,

ich sags gleich, die Boardsuche hat mir nicht weitergehlfen.

Ich habe folgendes Problem:

Ich möchte alle, also ich meine wirklich ALLE, ASCII zeichen wieder zurück in ASCII-Code wandeln.

Habe dazu diese Routine geschrieben.
Code:
#include <stdio.h>
void main(void)
{
 char ch;
 ch=15;                          //soll später mal eingelesen werden
 printf("ch: %i %c\n",ch,ch);
 getchar();
}

nur leider Funktioniert das nur im Bereich 0 bis 127.
Solbald ich für 'ch' einen Wert über 127 eingebe gibt er mir zwar das richtige zeichen aus, aber liefert mir einen Code der im Bereich von 0 bis -127 liegt.

Also 'Ç' ist -127, 'ü' ist -126 usw.
Bei 254 bekomme ich 0 und bei 255 wieder -1 zurück.

Was mache ich falsch? Muß ich einen anderen Varialentyp benutzen?
 
Hallo,

die Lösung ist ganz einfach.
Char Variablen haben 8 Bit.
Das erste Bit ( solange nicht unsigned ) steht für das Vorzeichen.
Das heißt das nur Zahlen von - 127 bis 127 möglich sind.
Also einfach unsigned char oder einen größeren Variablen Typ wie Short oder Int benutzen
 
danke für die schnelle Antwort. in meiner testroutine funktioniert es. In der Endanwendung leider nicht.. mal gucken woran das liegt.
 
Du solltest übrigens nicht einfach in der printf angeben, dass der erste Parameter ein int-Wert ist, wenn er ein char ist. Jeder Paramter belegt zwar auf dem Stack mindestens 4 Byte normalerweise, aber das ist kein Zwang (denke ich), es könnte also bei anderen Implementierungen zu Fehlern kommen...

Versuchs mal so (Übrigens ist ein Wert von -128 bis zu -1 nicht unkorrekt...):
Code:
#include <stdio.h>
int main(void)
{
 char ch = getche();
 printf("ch: %u %c\n",(unsigned int)ch,ch);
 getchar();
 return 0; }
 
Zurück