2016-08-01 12 views
-4

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

Sag mir nicht, du fflush-ed auf 'stdin' .... es ruft [undefiniertes Verhalten] (https://en.wikipedia.org/wiki/Undefined_behavior). –

+2

Bitte zeigen Sie uns Ihren Code als [mcve] (oder kaufen Sie uns alle Kristallkugeln). – kaylum

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.