Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Steuert die Streampufferung und die Puffergröße.
Syntax
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Parameter
stream
Zeiger zur FILE
-Struktur.
buffer
Vom Benutzer zugewiesener Puffer.
mode
Pufferungsmodus.
size
Puffergröße in Bytes. Zulässiger Bereich: 2 <= size
<INT_MAX (2147483647). Der für size
angegebene Wert wird intern auf das nächste Vielfache von 2 abgerundet.
Rückgabewert
Gibt bei Erfolg 0 zurück.
Wenn stream
oder nicht mode
size
innerhalb einer gültigen Änderung enthalten istNULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung weiterhin zugelassen wird, gibt diese Funktion -1 zurück und legt errno
auf EINVAL
fest.
Weitere Informationen zu diesen und anderen Fehlercodes finden Sie unter errno
, _doserrno
, _sys_errlist
und _sys_nerr
.
Hinweise
Die setvbuf
-Funktion ermöglicht dem Programm, die Pufferung und die Puffergröße für stream
zu steuern. stream
muss auf eine geöffnete Datei verweisen, die seit dem Öffnen keinen E/A-Vorgang durchlaufen hat. Das Array, auf das buffer
verwiesen wird, wird als Puffer verwendet, es sei denn buffer
NULL
, in diesem Fall setvbuf
wird ein automatisch zugewiesener Puffer der Länge size
/2 * 2 Bytes verwendet.
Der Modus muss _IOFBF
, _IOLBF
oder _IONBF
sein. Wenn mode
_IOFBF
oder _IOLBF
ist, wird size
als die Größe des Puffers verwendet. Wenn mode
ja, ist _IONBF
der Datenstrom nicht gepuffert, und beide size
werden buffer
ignoriert. Werte für mode
und ihre Bedeutung sind:
Wert vom Typ mode |
Bedeutung |
---|---|
_IOFBF |
Vollständige Pufferung; d.h. buffer dient als Puffer und size wird als die Größe des Puffers verwendet. Wenn buffer dies der Fall ist NULL , verwendet dieser Modus einen automatisch zugewiesenen Puffer, der Bytes lang ist size . |
_IOLBF |
Für einige Systeme stellt dieser Modus die Zeilenpufferung bereit. Für Win32 ist das Verhalten jedoch mit _IOFBF – Vollständige Pufferung identisch. |
_IONBF |
Kein Puffer wird verwendet, unabhängig von buffer oder size . |
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Routine | Erforderlicher Header |
---|---|
setvbuf |
<stdio.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Libraries
Alle Versionen der C-Laufzeitbibliotheken.
Beispiel
// crt_setvbuf.c
// This program opens two streams: stream1
// and stream2. It then uses setvbuf to give stream1 a
// user-defined buffer of 1024 bytes and stream2 no buffer.
//
#include <stdio.h>
int main( void )
{
char buf[1024];
FILE *stream1, *stream2;
if( fopen_s( &stream1, "data1", "a" ) == 0 &&
fopen_s( &stream2, "data2", "w" ) == 0 )
{
if( setvbuf( stream1, buf, _IOFBF, sizeof( buf ) ) != 0 )
printf( "Incorrect type or size of buffer for stream1\n" );
else
printf( "'stream1' now has a buffer of 1024 bytes\n" );
if( setvbuf( stream2, NULL, _IONBF, 0 ) != 0 )
printf( "Incorrect type or size of buffer for stream2\n" );
else
printf( "'stream2' now has no buffer\n" );
_fcloseall();
}
}
'stream1' now has a buffer of 1024 bytes
'stream2' now has no buffer