rewind(stdin) tut's nicht
-
Hiho!
Simples Problem:
1.Ich lese ein Zahl.
2.Ich will ein Char einlesen.2. tut aber nicht, denn die 1.Eingabe erledigt die zweite gleich mit (Tastaturpuffer nicht leer, richtig?). Nun gut, bei Win tut's mit einem eingefügten rewind(stin). Bei Linux bringt das nichts.
Jemand eine Idee oder einen Hinweis wo ich suchen kann?
Merci
Pesukarhu
-
Du koenntest Deinen Code zeigen, meine Glaskugel ist gerade in der Werkstatt. Eventuell reicht ein getchar() dazwischen?
-
Wie gesagt, simpel:
#include <stdio.h> int main(void) { int zahl=0; char buchstabe = 'A'; printf("Zahl:\t %d\tBuchstabe:\t%c\n", zahl, buchstabe); printf("Zahl:\t"); scanf("%d", &zahl); // 1.Versuch: printf("Buchstabe (getchar):\t"); buchstabe=getchar(); printf("Zahl:\t %d\tBuchstabe:\t%c\n", zahl, buchstabe); // 2.Versuch printf("Buchstabe (scanf):\t"); scanf("%c", &buchstabe); printf("Zahl:\t %d\tBuchstabe:\t%c\n", zahl, buchstabe); return 0; }
Es ist jedoch total egal, ob ich den Buchstaben nun zuerst mit scanf oder getchar einlese. Der erste Versuch wird immer von der Eingabe der Zahl übergebügelt.
cu
Archon
-
warum nicht
scanf("%d\n",&i);
Dann bleibt das \n auch nicht im buffer!