Eingabeprobleme
-
Hallo,
ich habe folgendes Problem. Ich frage mit scanf("%s", var); einen string ab.
solange eine bestimmte eingabe nicht erfolgt ist, wir die abfrage wiederholtscanf("%s", var);
while(...)
{
printf("Fehler...
scanf("%s", var);
}Jetzt habe ich das Problem, dass Fehler direkt 2mal kommt, wenn die eingabe falsch war, wenn man dan wieder was falsch eingibt, kommt das ganze wieder 2 mal bevor es anhält und man was neues eingeben kann. Woran liegt das?
Gruß
Steven
-
das enterteichen liegt noch im Eingabepuffer. dieser muss geleert werden
entweder mit fflush(stdin), geht aber nicht immer, d.h. ist unsicher oder besser mit
while (getchar != '\n');
-
hallo,
bei dem while bringt er mir 2 fehler:
error C2446: '!=' : Keine Konvertierung von 'int' in 'int (__cdecl *)(void)'
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
error C2040: '!=' : 'int (__cdecl *)(void)' unterscheidet sich von 'int' in bezug auf die Anzahl vorgenommener Dereferenzierungen
-
upps, sorry
while (getchar() != '\n');
-
Horst2 schrieb:
entweder mit fflush(stdin), geht aber nicht immer, d.h. ist unsicher
Es geht wohl mit dem Microsoft Compiler. Da ist das eine "Zugabe" die aber nicht dem Standard entspricht und genau deswegen nicht genommen werden sollte.
Die imho beste Lösung ist es alle Eingaben (nicht nur Strings) mittels fgets() zu erledigen.