setbuf

Mengontrol buffering aliran. Fungsi ini tidak digunakan lagi; gunakan setvbuf sebagai gantinya.

Sintaks

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

Parameter

stream
Penunjuk ke FILE struktur.

buffer
Buffer yang dialokasikan pengguna.

Keterangan

Fungsi setbuf mengontrol buffering untuk stream. Argumen stream harus merujuk ke file terbuka yang belum dibaca atau ditulis. buffer Jika argumen adalah NULL, aliran tidak dibuffered. Jika tidak, buffer harus menunjuk ke array karakter panjang BUFSIZ, di mana BUFSIZ adalah ukuran buffer seperti yang didefinisikan dalam STDIO.H. Buffer yang ditentukan pengguna, alih-alih buffer yang dialokasikan sistem default untuk aliran yang diberikan, digunakan untuk buffering I/O. Aliran stderr tidak dibuffer secara default, tetapi Anda dapat menggunakan setbuf untuk menetapkan buffer ke stderr.

setbuf telah digantikan oleh setvbuf, yang merupakan rutinitas pilihan untuk kode baru. Tidak seperti setvbuf, setbuf tidak memiliki cara melaporkan kesalahan. setvbuf juga memungkinkan Anda mengontrol mode buffering dan ukuran buffer. setbuf ada untuk kompatibilitas dengan kode yang ada.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
setbuf <stdio.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Baca juga

Streaming I/O
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf