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 stream
arabelleğ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 BUFSIZ
bir 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 setvbuf
değ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