Frage zum Befehl: Scanf mit unterschiedlichen Datentypen

setvbuf ändert die Art, wie gebuffert wird, und ist nicht zum Leeren gedacht. Außerdem darf es nur sofort nach dem Öffnen verwendet werden, vor jedem Lesen oder Schreiben. Und wie schon gesagt wird stdout das Verhalten von scanf sowieso nicht beeinflussen (auch setvbuf mit stdin macht da keinen Sinn. Vom Line- zu Vollbuffer macht das ganze Eingabesystem eher kaputt, und keine Bufferung ändert auch nicht, dass scanf das \n nicht verbraucht).

fflush wäre zum Leeren, allerdings nur für Ausgabestreams, nicht stdin.

Und eine globale Lösung ohne nach jedem scanf etwas machen zu müssen ...
kenn zwar (natürlich) nicht jeden C-Befehl den es gibt, aber ich behaupte einmal "Gibts nicht".
 
Hi hanow,

ich suche einen Befehl der nur einmalig für den ganzen Code geht.

Schreib dir doch eine kleine Hilfsfunktion "einlesen", die immer nach dem scanf(), den von mir gezeigten Code ausführt. Dann musst du auch bei Erweiterungen des Programms nicht immer dran denken, den Puffer zu leeren, nachdem du scanf() verwendet hast ;)
 
Zurück