setbuf-Umleitung

Benutze ich setbuf, um die Umleitung von stdout zu char Puffer
Aber ich bekomme einige Nebenwirkung nach ,wenn ich was schreiben will, um den Standardausgabe-nur die neuen Daten

Wie im folgenden code:

#define bufSize  100
int main()
{
    char buf[bufSize];
    setbuf(stdout, buf);
    printf("123");             //123 is written to the buffer

    setbuf(stdout,NULL);       //123 is written to the stdout(unwanted side effect)
    printf("456");             //123456 appears in the stdout
}

Wie ich das problem lösen kann?

Andere Frage bezüglich dieser - wird dieser code funktioniert für unix/linux/mac os?

Kann jemand vorschlagen, die Lösung für die Umleitung?

Ich vermute, Sie haben der Puffer geleert bevor Sie es auf etwas anderes.
half ein wenig.Aber nicht das problem lösen - 456 gedruckt in den stdout ab 4 positition(ich meine, wo 123 beendet,die Verbleibende Lücke..)
Gibt es nicht eine Möglichkeit im standard C99-Umleitung an einen stream zu einem automatisch wachsenden Puffer. Es gibt einige Mechanismen, die für ähnliche Anforderungen, die in TR27431-2, aber Sie sind nicht überall verfügbar. Ich bin mir nicht sicher, dass Sie in der kommenden C-standard, entweder.

InformationsquelleAutor Yakov | 2011-08-16

Schreibe einen Kommentar