Warum kann ich mit folgendem "Programm", nicht zwei HEX-Zahlen einlesen?
#include <stdio.h>
int main(void)
{
unsigned char a, b;
printf("Erste HEX-Zahl(max. FF): 0x");
scanf("%x", &a);
printf("Zweite HEX-Zahl(max. FF): 0x");
scanf("%x", &b);
printf("%x, %x",a ,b);
system("PAUSE");
return 0;
}
Wenn ich die beiden scanf-Anweisungen vertausche, dann geht es!? Muss
ich das einfach akzeptieren?
Grüße
Austrianer
Mit %x wird eine unsigned int gelesen, du hast aber unsigned char.
Dominik M. schrieb:> Wenn ich die beiden scanf-Anweisungen vertausche, dann geht es!?
Zufall?
a und b mögen stimmen - du überschreibst dafür ein anderes Byte, und
merkst es nur nicht.
> Muss ich das einfach akzeptieren?
Musst du nicht.
Man muss nur akzeptieren, daß ein falsches Programm nicht richtig läuft.
:-)
Doch, natürlich.
Aber nach ANSI-Standard nicht in eine char, sondern in eine unsigned int
(%x), unsigned long (%lx), unsigned short (%hx).
Beim gcc bzw. bei der glibc und m.W. auch nach C99 geht eine unsigned
char mit %hhx.
Siehe man 3 printf.