Fflush()

Hallo Leute,

ich bekomme es nicht hin, nur 3 Zeichen einzulesen:
#include

int main()
{
int artikel;
int anzahl;
float preis;

printf("\n3-stellige Artikelnummer: „);
scanf(“%3d",&artikel);
fflush(stdin);

printf(„Stückzahl: (max. 999)“);
scanf("%3d", &anzahl);
fflush(stdin);

printf(„Stückpreis: „);
scanf(“%f“, &preis);

printf("\nArtikelnummer\tStückzahl\tStückpreis\n\n");
printf("%-13ld\t%-9d\t€ %-.2f\n",artikel,anzahl,preis);

return 0;
}
Dann erhalte ich:
user@pc5:~/c$ gcc now.c && ./a.out

3-stellige Artikelnummer: 1234
Stückzahl: (max. 999)Stückpreis: 23

Artikelnummer Stückzahl Stückpreis

123 4 € 23.00
Aber fflush sollte doch dafür sorgen, daß stdin wieder leer ist für anzahl. Was mache ich falsch? Wie geht es richtig?
Gruß
Markus

fflush(stdin);

fflush ist nur für _aus_gabe-Streams geeignet. Eingaben musst du entweder leer lesen oder einfach nur das rausholen was du brauchst.

Hallo Nicos,

danke für die prompte Antwort!
Ich arbeite momentan das Buch von Prinz & Prinz: C für PCs. 2. Auflage durch. (Ich habe früher schonmal den Erlenkötter durchgeackert, aber nun wollte ich meine Kenntnisse auffrischen.) Auf S. 69 wird behauptet fflush(stdin) würde das leisten. Insgesamt hab ich bisher einige kleinere Fehler in dem Buch entdeckt. Aber wenn das tatsächlich falsch ist (man fflush() hat nämlich auch gesagt, es gehe nur bei output), find ich das schon krass.
Danke und Gruß
Markus