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

< Previous Next >
Re: scanf()
  • From: Bernhard Walle <Bernhard.Walle@xxxxxx>
  • Date: Fri, 16 Jan 2004 17:07:12 +0100
  • Message-id: <20040116160712.GA3175@xxxxxxxxxxxxxxx>
* Bernhard Walle <Bernhard.Walle@xxxxxx> [2004-01-16 15:38]:
> 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).

Blöder Denkfehler: Ich habe (unsigned int*)buf + 1 mit (unsigned int*)(buf + 1)
verwechselt. Jetzt ist es klar.

Gruß,
Bernhard

--
_________ http://www.bwalle.de _________________________________________________
"Damn the torpedoes. Full speed ahead"
-- Capt. David Farragut

< Previous Next >
References