Mailinglist Archive: opensuse-programming-de (174 mails)

< Previous Next >
scanf()
  • From: Bernhard Walle <Bernhard.Walle@xxxxxx>
  • Date: Fri, 16 Jan 2004 15:38:24 +0100
  • Message-id: <20040116143824.GC2718@xxxxxxxxxxxxxxx>
Hallo,

folgende Zeile Code habe ich irgendwo gefunden (ist jetzt egal woher):

unsigned char buf[20];
scanf("%X %X %X", (unsigned int*)buf, (unsigned int*)buf+1, (unsigned int*)buf+2);

Sinn des Ganzen ist dass eine Zeile der Form "01 23 AB" von Hexziffern
eingelesen werden soll wobei zwei Hexziffern ein Byte darstellen sollen.

Es funktioniert nicht und man macht sowas auch nicht unbedingt. Nur
verstehe ich das Ergebnis nicht ganz, im Speicher steht dann

buf[0] = FF
buf[1] = 0
buf[2] = 0

Ich könnt's mir eigentlich nur erklären wenn man davon ausgeht dass
scanf() die Werte von rechts nach links füllt (und das Ganze auf einer
Little-Endian-Maschine läuft, was ja bei IA32 der Fall ist).

Wie gesagt: Mir geht's nicht darum wie ich den Code stattdessen
schreiben soll, dass er funktioniert sondern nur um die Erklärung des
Ergebnisses.


Gruß,
Bernhard

--
_________ http://www.bwalle.de _________________________________________________
Q: How does a Unix guru have sex?
A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

< Previous Next >