Udostępnij przez


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 buforów do stderrprogramu .

setbuf został zastąpiony przez setvbufelement , który jest preferowaną procedurą dla nowego kodu. W przeciwieństwie do setvbufprogramu 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