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:
| Mode | Beschreibung |
|---|---|
| _IOFBF | Vollstä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. |
| _IOLBF | Zeilenpufferung: 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. |
| _IONBF | Keine 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 这将在编程时出现 最后休眠五秒钟Weitere Erweiterungen