setbuf
Steruje buforowaniem strumienia. Ta funkcja jest przestarzała; Zamiast tego użyj setvbuf
polecenia .
Składnia
void setbuf(
FILE *stream,
char *buffer
);
Parametry
stream
Wskaźnik do FILE
struktury.
buffer
Bufor przydzielony przez użytkownika.
Uwagi
Funkcja setbuf
kontroluje buforowanie dla elementu stream
. stream
Argument musi odwoływać się do otwartego pliku, który nie został odczytany ani zapisany. buffer
Jeśli argument to NULL
, strumień jest niebuforowany. Jeśli tak nie jest, bufor musi wskazywać tablicę znaków o długości BUFSIZ
, gdzie BUFSIZ
jest rozmiarem buforu zgodnie z definicją w STDIO.H. Bufor określony przez użytkownika, zamiast domyślnego buforu przydzielonego przez system dla danego strumienia, jest używany do buforowania we/wy. Strumień stderr
jest domyślnie niebuforowany, ale można go użyć setbuf
do przypisania do stderr
programu .
setbuf
został zastąpiony przez setvbuf
element , który jest preferowaną procedurą dla nowego kodu. W przeciwieństwie do setvbuf
programu setbuf
nie ma możliwości raportowania błędów. setvbuf
Umożliwia również sterowanie zarówno trybem buforowania, jak i rozmiarem buforu. setbuf
istnieje w celu zachowania zgodności z istniejącym kodem.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
setbuf |
<stdio.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
We/Wy strumienia
fclose
, _fcloseall
fflush
fopen
, _wfopen
setvbuf