setbuf
Controla el almacenamiento en búfer de la secuencia. Esta función está en desuso; use setvbuf
en su lugar.
Sintaxis
void setbuf(
FILE *stream,
char *buffer
);
Parámetros
stream
Puntero a la estructura FILE
.
buffer
Búfer asignado por el usuario.
Comentarios
La función setbuf
controla el almacenamiento en búfer de stream
. El stream
argumento debe hacer referencia a un archivo abierto que no se ha leído ni escrito. Si el buffer
argumento es NULL
, la secuencia no se puede búfer. Si no es así, el búfer debe apuntar a una matriz de caracteres con una longitud de BUFSIZ
, donde BUFSIZ
es el tamaño del búfer como se define en STDIO.H. Para el almacenamiento en búfer de E/S se usa el búfer especificado por el usuario, y no el búfer predeterminado asignado por el sistema para la secuencia especificada. La stderr
secuencia está sin búfer de forma predeterminada, pero puede usar setbuf
para asignar búferes a stderr
.
setbuf
se ha reemplazado por setvbuf
, que es la rutina preferida para el nuevo código. A diferencia setvbuf
de , setbuf
no tiene forma de notificar errores. setvbuf
también le permite controlar el modo de almacenamiento en búfer y el tamaño del búfer. setbuf
existe para la compatibilidad con el código existente.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
setbuf |
<stdio.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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
Vea también
E/S de secuencia
fclose
, _fcloseall
fflush
fopen
, _wfopen
setvbuf