scanf und gets verträgt sich nicht
-
hoi,
ich lese mit scanf("%i",&lol) eine zahl ein...
wenn ich aber danach mit gets() etwas in eine char-vari schreiben
will (damit ich auch leerzeichen einlesen kann) geht es nicht,
da gets() einfach übersprungen wirdworan liegt es und wie kann ich noch leerzeichen in eine char-vari
einlesen ohne strings zu benutzen?thx, babel
-
aber wenn du zwei gets(); hintereinander schreibst wirds funktionieren...
greetz of balthazar
-
@babelduo
Das gets() wird nicht einfach übersprungen, sondern liest den Rest, der nach dem scanf() noch im Eingabepuffer steht aus.Übrigens sollte man gets() nicht benutzen sondern fgets(), da man damit keinen Bufferoverflow riskiert.
-
d.h. dass das Enterzeichen noch im Eingabepuffer steht. Du solltest vor jedem Einlesen ein fflush(stdin); machen
-
Horst2 schrieb:
d.h. dass das Enterzeichen noch im Eingabepuffer steht. Du solltest vor jedem Einlesen ein fflush(stdin); machen
Was wiederrum undefiniert ist.
MfG SideWinder
-
Stimmt - bei mir gab es heut was undefinierbares in der Kantine!
Ich kann nur raten: FInger weg!
-
Horst2 schrieb:
d.h. dass das Enterzeichen noch im Eingabepuffer steht. Du solltest vor jedem Einlesen ein fflush(stdin); machen
-
ok vielen dank schonmal, mit
fflush(stdin);
würde es gehen - aber wenn man davon abrät
was kann man nehmen?!
-
@babelduo
Entweder du liest alles mit fgets() ein (was zu empfehlen ist, da man dort keinen Bufferoverflow riskiert)
oder du gibst beim scanf() am Schluss noch ein \n an.