program source code Wie soll ich fflush
in C auf OS/X verwenden? Wenn ich es verwende, löscht es meinen Puffer nicht und beendet das Programm sofort.Wie verwende ich fflush in c auf OS/X
-4
A
Antwort
0
Aufruf fflush(stdin);
ruft undefiniertes Verhalten auf. Sie sollten dies nicht verwenden flush Zeichen aus dem Standard-Eingabepuffer. Stattdessen können Sie die Zeichen bis zum nächsten Zeilenvorschub lesen und sie ignorieren:
int c;
while ((c = getchar()) != EOF && c != '\n')
continue;
Sie auch scanf()
dafür verwenden können, aber es ist schwierig:
scanf("%*^[\n]"); // read and discard any characters different from \n
scanf("%*c"); // read and discard the next char, which, if present, is a \n
Beachten Sie, dass die 2 Anrufe nicht kombinieren oben, weil es nicht möglich wäre, einen Zeilenvorschub zu lesen, dem keine anderen Zeichen vorangestellt sind, da das erste Format fehlschlagen würde.
Sag mir nicht, du fflush-ed auf 'stdin' .... es ruft [undefiniertes Verhalten] (https://en.wikipedia.org/wiki/Undefined_behavior). –
Bitte zeigen Sie uns Ihren Code als [mcve] (oder kaufen Sie uns alle Kristallkugeln). – kaylum