setvbuf
Steuerelemente datenstrom pufferbetrieb und der angegebenen Puffergröße.
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Parameter
stream
Zeiger auf FILE Struktur.buffer
USER-zugeordneter Puffer.mode
Modus Puffern.size
Puffergröße in Bytes.Zulässiger Bereich: 2 <= size <= INT_MAX (2147483647).Intern wird der Wert, der für size angegeben wird, auf die nächste Vielfaches von 2 gerundet.
Rückgabewert
Gibt 0 zurück, wenn der Vorgang erfolgreich war.
Wenn streamNULList oder wenn mode oder size nicht innerhalb einer gültigen Änderung ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, gibt die Funktion -1 zurück und legt ihn fest. EINVALzu errno
Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die setvbuf-Funktion ermöglicht es dem Programm die Pufferung und Puffergröße für streamzu steuern.stream muss eine geöffnete Datei verweisen, die keinen E/A-Vorgang unterzogen hat, seitdem er geöffnet wurde.Das Array, auf die von buffer gezeigt wird, wird als Puffer verwendet, es sei denn, es NULList, in diesem Fall automatisch einen setvbuf zugeordneten Puffer der Länge size/2 * 2 Byte verwendet.
Der Modus muss _IOFBF, _IOLBFoder _IONBFsein.Wenn mode_IOFBF oder _IOLBFist, wird size als die Größe des Puffers verwendet.Wenn mode_IONBFist, wird der Stream ungepuffert und size und buffer werden ignoriert.Werte für mode und ihre Bedeutungen sind:
_IOFBF
Vollständiger Pufferung. d. h. buffer verwendet, während der Puffer und size als die Größe des Puffers verwendet wird.Wenn bufferNULList, size Bytes eines wird automatisch zugeordnete Puffers lang verwendet._IOLBF
Für einige Systeme bietet diese Zeilen pufferbetrieb.Bei Win32, entspricht das Verhalten dem _IOFBF - vollständiger Pufferung._IONBF
Kein Puffer wird, unabhängig davon buffer oder sizeverwendet.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
setvbuf |
<stdio.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen Cs.
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();
}
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.