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.

Siehe auch

Referenz

Stream E/A

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf