Linguaggio C - setbuf(), setbuffer(), setlinebuf(), setvbuf()

NOME

setbuf(), setbuffer(), setlinebuf(), setvbuf() - imposta la bufferizzazione

SINOPSI

#include <stdio.h> void setbuf(FILE *stream, char *buf); void setbuffer(FILE *stream, char *buf, size_t size); void setlinebuf(FILE *stream); int setvbuf(FILE *stream, char *buf, int mode, size_t size);

DESCRIZIONE

Sono possibili 3 tipi di bufferizzazione:
o Bufferizzazione a blocchi (tipicamente tutti i files)
o Bufferizzazione a linea (tipicamente stdout)
o Senza bufferizzazione (tipicamente stderr)

La funzione setvbuf() imposta la bufferizzazione dello stream.

L'argomento mode puo' assumere uno dei valori seguenti:
_IONBF Definisce un I/O non bufferizzato.
Le informazioni scritte in output vengono immediatamente trasferite alle routine di scrittura.
_IOLBF Definisce un I/O con bufferizzazione a linea.
Le informazioni vengono trasferite per la scrittura sul device, quando viene incontrato il carattere new-line '\n'.
buf dovrebbe puntare ad un buffer di almeno size byte.
_IOFBF Definisce un I/O pienamente bufferizzato.
buf dovrebbe puntare ad un buffer di almeno size byte.

Se l'argomento buf e' NULL solamente mode ha influenza. Inoltre, (eccetto per _IONBF) un nuovo buffer verra' allocato con la prossima operazione di lettura o scrittura.
setvbuf() deve venire chiamata quando lo stream non e' attivo, cioe' o dopo una chiamata a fflush(), oppure prima della prima operazione di I/O sullo stream.

Nella funzione setbuf(), se buf e' NULL viene eliminata la bufferizzazione, altrimenti viene impostata la bufferizzazione con buffer buf che deve avere almeno dimensione BUFSIZ.
setbuf() equivale a:
(void)setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);

La funzione setbuffer() equivale alla funzione:
(void)setvbuf(stream, buf, buf ? _IOFBF : _IONBF, size);

Infine la funzione setlinebuf() e' equivalente alla chiamata:
(void)setvbuf(stream, (char *)NULL, _IOLBUF, 0);

VALORE DI RITORNO

La funzione setvbuf() ritorna 0 in caso di successo ed un valore non nullo in caso di errore.
Le funzioni setbuf(), setbuffer() e setlinebuf() non restituiscono valori.

CONFORME A

Funzioni setbuf() e setvbuf(): ANSI C3.159-1989 (``ANSI C'')

VEDI ANCHE

fopen() fdopen() freopen() tmpfile() fclose() clearerr() feof() ferror() fileno() fseek() rewind() ftell() fgetpos() fsetpos() fflush() fgetc() getc() getchar() ungetc() fputc() putc() putchar() fgets() gets() fputs() puts() scanf() fscanf() sscanf() vscanf() vsscanf() vfscanf() printf() fprintf() sprintf() snprintf() vprintf() vfprintf() vsprintf() vsnprintf() fread() fwrite()


Indice-C Indice linguaggio C
Indice librerie Indice librerie C
At Home Umberto Zappi Home Page
Indice funzioni Indice funzioni C