Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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