Cin / gets - Problem
-
Hallo,
ich habe ein kleines Problem mit der gets-Funktion. Wenn ich beispielsweise
cout << "Benutzername: "; gets(bnme);schreibe, so kommt es manchmal vor, dass das Programm nicht auf die Eingabe des Benutzernamens wartet, sondern gleich mit der Programmausführung weitermacht...
aber woran liegt das?
Grüße
Tim
-
sorry für den Doppelpost, aber ich möchte nicht, dass hier Missverständnisse entstehen.
Ich verwende in meinem Programm mehrmals die gets-Funktion, und bei manchen wartet das Programm mit der Ausführung, bei manchen nicht. Nicht das jetzt jemand denkt, manchmal hält die Programmausführung bei der Benutzernamensabfrage an, und manchmal nicht. Bei ihr zum Beispiel hält die Ausführung an (so wie es sein sollte), aber bei manch anderen gets-Aufrufen nicht mehr...
Aber wieso?
Grüße
Hoonk
-
Das liegt daran, dass noch irgendwelcher Schrott im Eingabestream ist.
Unter C++ nimmt man für sowas am besten std::getline, und nicht gets.
-
Hallo,
ich kann mir gut vorstellen, dass dein Problem mit cin.getline auch nicht behoben ist.
Im Endeffekt hast du dann wieder genau das selbe Problem wie mit gets, was Tachyon auch schon beschrieben hat.
Ich schätze, du verwendest cin und cin.getline vermischt, sodass die cin.getlines nach den cins Schwierigkeiten bereiten.
Versuche mal, hinter jedes cin ein fflush bzw. fflush(stdin) zu setzen...Grüße
Gapa
-
Gapa schrieb:
ich kann mir gut vorstellen, dass dein Problem mit cin.getline auch nicht behoben ist.
Worauf begründest du deine Vermutung?
Gapa schrieb:
Versuche mal, hinter jedes cin ein fflush bzw. fflush(stdin) zu setzen...
Lieber nicht. Wie gesagt, sollte man sich für eine Sprache entscheiden, wobei ich C++ empfehle.
-
Gapa schrieb:
Hallo,
ich kann mir gut vorstellen, dass dein Problem mit cin.getline auch nicht behoben ist.
Im Endeffekt hast du dann wieder genau das selbe Problem wie mit gets, was Tachyon auch schon beschrieben hat.
Ich schätze, du verwendest cin und cin.getline vermischt, sodass die cin.getlines nach den cins Schwierigkeiten bereiten.
Versuche mal, hinter jedes cin ein fflush bzw. fflush(stdin) zu setzen...Grüße
GapaFür Inputstreams ist flush nicht definiert. Das Verhalten einer solchen Operation ist undefiniert. Das gilt übrigens auch für C.