Freigeben über


setvbuf

Kontrollenstreampufferung und -Puffergröße.

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

Parameter

  • stream
    Zeiger zur FILE-Struktur.

  • buffer
    Benutzer-zugeordneter Puffer.

  • mode
    Modus der Pufferung.

  • size
    Puffergröße in Bytes. Zulässiger Bereich: 2 <= size <= INT_MAX (2147483647). Intern wird der Wert, der für size angegebene, unten zur nächsten Vielfachen von 2. gerundet.

Rückgabewert

Gibt bei Erfolg 0 zurück.

Wenn streamNULL ist oder wenn mode oder size nicht in einer gültigen Änderung ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, legt gibt diese Funktion -1 und errno auf EINVAL fest.

Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die setvbuf-Funktion ermöglicht dem Programm, um Pufferung und Puffergröße für stream zu steuern. stream muss eine geöffnete Datei verweisen, die keinen E/A-Vorgang unterzogen wurde, seitdem er geöffnet war. Das Array, auf den durch buffer gezeigt wird, wird als Puffer verwendet, es sei denn, dass dies NULL ist, in diesem Fall setvbuf zugeordneten Puffer einen automatisch der Länge size* /2 2 Bytes verwendet.

Der Modus muss _IOFBF, _IOLBF oder _IONBF sein. Wenn mode_IOFBF oder _IOLBF ist, wird size wie die Puffergröße verwendet. Wenn mode_IONBF ist, ist der Stream ungepuffert und size und buffer ignoriert werden. Werte für mode und ihre Bedeutungen sind:

  • _IOFBF
    Vollständige Pufferung; das heißt, wird buffer verwendet, während der Puffer und size während die Größe des Puffers verwendet wird. Wenn bufferNULL ist size, wird automatisch zugeordnete Bytes eines Puffers lang verwendet.

  • _IOLBF
    Für einige Systeme stellt dieses Zeilenpufferung. Bei Win32, ist das Verhalten dem _IOFBF - full Puffern.

  • _IONBF
    Kein Puffer wird, unabhängig von buffer oder size verwendet.

Anforderungen

Routine

Erforderlicher Header

setvbuf

<stdio.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Bibliotheken

Alle Versionen 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();
   }
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Stream-E/A

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf