Freigeben über


setbuf

Steuert die Streampufferung. Diese Funktion ist veraltet. Verwenden Sie stattdessen setvbuf .

Syntax

void setbuf(
   FILE *stream,
   char *buffer
);

Parameter

stream
Zeiger zur FILE -Struktur.

buffer
Vom Benutzer zugewiesener Puffer.

Hinweise

Die setbuf-Funktion steuert die Pufferung für stream. Das stream Argument muss auf eine geöffnete Datei verweisen, die nicht gelesen oder geschrieben wurde. Wenn das buffer Argument lautet NULL, ist der Datenstrom nicht gepuffert. Wenn dies nicht der Fall ist, muss der Puffer auf ein Zeichenarray der Länge BUFSIZ zeigen, wobei BUFSIZ die in STDIO.H definierte Puffergröße ist. Für den E/A-Pufferbetrieb wird anstelle des systemseitig für den gegebenen Stream reservierten Puffers der vom Benutzer angegebene Puffer verwendet. Der stderr Datenstrom ist standardmäßig nicht gepuffert, Sie können setbuf jedoch Puffer stderrzuweisen.

setbuf wurde durch die bevorzugte Routine für neuen Code ersetzt setvbuf. Im Gegensatz dazu setvbufgibt es keine Möglichkeit, setbuf Fehler zu melden. setvbuf Außerdem können Sie sowohl den Puffermodus als auch die Puffergröße steuern. setbuf ist zur Kompatibilität mit vorhandenem Code vorhanden.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Anforderungen

Routine Erforderlicher Header
setbuf <stdio.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.

#include <stdio.h>

int main( void )
{
   char buf[BUFSIZ];
   FILE *stream1, *stream2;

   fopen_s( &stream1, "data1", "a" );
   fopen_s( &stream2, "data2", "w" );

   if( (stream1 != NULL) && (stream2 != NULL) )
   {
      // "stream1" uses user-assigned buffer:
      setbuf( stream1, buf ); // C4996
      // Note: setbuf is deprecated; consider using setvbuf instead
      printf( "stream1 set to user-defined buffer at: %Fp\n", buf );

      // "stream2" is unbuffered
      setbuf( stream2, NULL ); // C4996
      printf( "stream2 buffering disabled\n" );
      _fcloseall();
   }
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled

Siehe auch

Stream-E/A
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf