C-Bibliotheksfunktionen -setvbuf()

C-Standardbibliothek - <stdio.h>

Beschreibung

C-Bibliotheksfunktionenint setvbuf(FILE *stream, char *buffer, int mode, size_t size)Definiert, wie der Stream gepuffert werden soll.

Deklaration

Nachfolgend die Deklaration der Funktion setvbuf().

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

Parameter

  • stream-- Dies ist ein Zeiger auf ein FILE-Objekt, das einen geöffneten Stream identifiziert.
  • buffer-- Dies ist ein vom Benutzer allokierter Puffer. Wenn er auf NULL gesetzt ist, alloziert die Funktion automatisch einen Puffer der angegebenen Größe.
  • mode-- Dies gibt den Modus der Dateipufferung an:
ModeBeschreibung
_IOFBFVollständige Pufferung: Bei Ausgabe werden Daten auf einmal geschrieben, wenn der Puffer voll ist. Bei Eingabe wird der Puffer gefüllt, wenn eine Eingabe angefordert wird und der Puffer leer ist.
_IOLBFZeilenpufferung: Bei Ausgabe werden Daten geschrieben, wenn ein Zeilenumbruchzeichen auftritt oder wenn der Puffer voll ist, je nachdem, was zuerst eintritt. Bei Eingabe wird der Puffer gefüllt, wenn eine Eingabe angefordert wird und der Puffer leer ist, bis zum nächsten Zeilenumbruchzeichen.
_IONBFKeine Pufferung: Es wird keine Pufferung verwendet. Jede I/O-Operation wird sofort geschrieben. Die Parameter buffer und size werden ignoriert.
  • size-- Dies ist die Größe des Puffers in Bytes.

Rückgabewert

Bei Erfolg gibt diese Funktion 0 zurück; andernfalls gibt sie einen Wert ungleich null zurück.

Beispiel

Das folgende Beispiel demonstriert die Verwendung der Funktion setvbuf().

Beispiel

#include <stdio.h> #include <unistd.h> #include <string.h> int main() { char buff[1024]; memset( buff, '\0', sizeof( buff )); fprintf(stdout, "Vollständige Pufferung aktivieren\n"); setvbuf(stdout, buff, _IOFBF, 1024); fprintf(stdout, "Dies ist example.com\n"); fprintf(stdout, "Diese Ausgabe wird in buff gespeichert\n"); fflush( stdout ); fprintf(stdout, "Dies wird beim Programmieren angezeigt\n"); fprintf(stdout, "Zum Schluss fünf Sekunden schlafen\n"); sleep(5); return(0); }

Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt. Hier speichert das Programm die gepufferte Ausgabe inbuffbis zum ersten Aufruffflush()bis dahin beginnt es, die Ausgabe zu puffern, und schläft schließlich 5 Sekunden. Es leert die verbleibende Ausgabe nach STDOUT, bevor das Programm endet.

启用全缓冲
这里是 example.com
该输出将保存到 buff
这将在编程时出现
最后休眠五秒钟

C-Standardbibliothek - <stdio.h>

Weitere Erweiterungen