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 stderr
zuweisen.
setbuf
wurde durch die bevorzugte Routine für neuen Code ersetzt setvbuf
. Im Gegensatz dazu setvbuf
gibt 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der 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