setbuf
Controlla il buffering del flusso. Questa funzione è deprecata. In alternativa, usare setvbuf
.
Sintassi
void setbuf(
FILE *stream,
char *buffer
);
Parametri
stream
Puntatore alla struttura FILE
.
buffer
Buffer allocato dall'utente.
Osservazioni:
La funzione setbuf
controlla il buffering per stream
. L'argomento stream
deve fare riferimento a un file aperto che non è stato letto o scritto. Se l'argomento buffer
è NULL
, il flusso non viene memorizzato nel buffer. In caso contrario, il buffer deve puntare a una matrice di caratteri di lunghezza BUFSIZ
, dove BUFSIZ
è la dimensione del buffer, come definita in STDIO.H. Per il buffering di I/O viene usato il buffer specificato dall'utente, invece del buffer allocato dal sistema predefinito per il flusso specificato. Il stderr
flusso non viene memorizzato nel buffer per impostazione predefinita, ma è possibile usare setbuf
per assegnare buffer a stderr
.
setbuf
è stato sostituito da setvbuf
, che è la routine preferita per il nuovo codice. A differenza setvbuf
di , setbuf
non ha modo di segnalare errori. setvbuf
consente anche di controllare sia la modalità di memorizzazione nel buffer che le dimensioni del buffer. setbuf
esiste per la compatibilità con il codice esistente.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
setbuf |
<stdio.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
I/O di flusso
fclose
, _fcloseall
fflush
fopen
, _wfopen
setvbuf