Aracılığıyla paylaş


setbuf

Akış arabelleği almayı denetler. Bu işlev kullanım dışıdır; yerine kullanın setvbuf .

Sözdizimi

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

Parametreler

stream
Yapı işaretçisi FILE .

buffer
Kullanıcı tarafından ayrılan arabellek.

Açıklamalar

setbuf işlevi için streamarabelleğe almayı denetler. stream Bağımsız değişken, okunmamış veya yazılmamış açık bir dosyaya başvurmalıdır. buffer Bağımsız değişken iseNULL, akış kaldırılmış olur. Aksi takdirde, arabellek uzunluklu BUFSIZbir karakter dizisine işaret etmelidir; burada BUFSIZ STDIO.H'de tanımlandığı gibi arabellek boyutudur. G/Ç arabelleği oluşturma için verilen akış için sistem tarafından ayrılmış varsayılan arabellek yerine kullanıcı tarafından belirtilen arabellek kullanılır. Akış stderr varsayılan olarak kaldırılır, ancak arabellekleri stderröğesine atamak için kullanabilirsinizsetbuf.

setbuf yeni kod için tercih edilen yordam olan ile setvbufdeğiştirilmiştir. setbuf'nin aksinesetvbuf, hataları raporlamanın hiçbir yolu yoktur. setvbuf ayrıca hem arabelleğe alma modunu hem de arabellek boyutunu denetlemenizi sağlar. setbuf mevcut kodla uyumluluk için var.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
setbuf <stdio.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Akış G/Ç
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf