I/O di flusso
Queste funzioni elaborano dati di diverse dimensioni e formati, da singoli caratteri a strutture dati di grandi dimensioni. Forniscono anche il buffering, migliorando le prestazioni. Le dimensioni predefinite del buffer del flusso sono 4 KB. Queste routine influiscono solo su buffer creati dalle routine di libreria di runtime e non hanno alcun effetto sui buffer creati dal sistema operativo.
Routine di I/O di flusso
Ciclo | Utilizzo |
---|---|
clearerr , clearerr_s |
Eliminare l'indicatore di errore per il flusso |
fclose |
Chiudere il flusso |
_fcloseall |
Chiudere tutti i flussi aperti tranne stdin , stdout e stderr |
_fdopen , wfdopen |
Associare il flusso a un descrittore di file del file aperto |
feof |
Test per la fine del file sul flusso |
ferror |
Test per l'errore sul flusso |
fflush |
Svuotare il flusso dal buffer o dal dispositivo di archiviazione |
fgetc , fgetwc |
Leggere caratteri dal flusso (versioni della funzione di getc e di getwc ) |
_fgetchar , _fgetwchar |
Leggere caratteri dal flusso stdin (versioni della funzione di getchar e di getwchar ) |
fgetpos |
Ottenere l'indicatore di posizione del flusso |
fgets , fgetws |
Leggere una stringa dal flusso |
_fileno |
Ottenere il descrittore di file associato al flusso |
_flushall |
Svuotare tutti i flussi dal buffer o dal dispositivo di archiviazione |
fopen , _wfopen , fopen_s _wfopen_s |
Aprire il flusso |
fprintf , _fprintf_l , fwprintf , _fwprintf_l fprintf_s , _fprintf_s_l , , fwprintf_s _fwprintf_s_l |
Scrivere dati formattati in un flusso |
fputc , fputwc |
Scrivere un carattere in un flusso (versioni di funzione di putc e di putwc ) |
_fputchar , _fputwchar |
Scrivere il carattere su stdout (versioni di funzione di putchar e di putwchar ) |
fputs , fputws |
Scrivere una stringa nel flusso |
fread |
Leggere dati non formattati da un flusso |
freopen , _wfreopen , freopen_s _wfreopen_s |
Riposizionare il puntatore del flusso FILE in un nuovo file o dispositivo |
fscanf , fwscanf , fscanf_s , _fscanf_s_l , fwscanf_s _fwscanf_s_l |
Leggere dati formattati da un flusso |
fseek , _fseeki64 |
Spostare la posizione del file nel percorso specificato |
fsetpos |
Impostare l'indicatore di posizione del flusso |
_fsopen , _wfsopen |
Aprire il flusso con condivisione di file |
ftell , _ftelli64 |
Ottenere la posizione corrente del file |
fwrite |
Scrivere gli elementi di dati non formattati nel flusso |
getc , getwc |
Leggere i caratteri dal flusso (versioni macro di fgetc e di fgetwc ) |
getchar , getwchar |
Leggere i caratteri da stdin (versioni macro di fgetchar e di fgetwchar ) |
_getmaxstdio |
Restituisce il numero dei file aperti contemporaneamente consentito a livello di I/O del flusso. |
gets_s , _getws_s |
Leggere una riga da stdin |
_getw |
Leggere int binari da un flusso |
printf , _printf_l , wprintf , _wprintf_l ,printf_s _printf_s_l , , , wprintf_s _wprintf_s_l |
Scrivere dati formattati in stdout |
putc , putwc |
Scrivere un carattere in un flusso (versioni macro di fputc e di fputwc ) |
putchar , putwchar |
Scrivere un carattere in stdout (versioni macro di fputchar e di fputwchar ) |
puts , _putws |
Scrivere una riga nel flusso |
_putw |
Scrivere int binari in un flusso |
rewind |
Spostare la posizione del file all'inizio di un flusso |
_rmtmp |
Rimuovere i file temporanei creati da tmpfile |
scanf , _scanf_l , wscanf , _wscanf_l ,scanf_s _scanf_s_l , , , wscanf_s _wscanf_s_l |
Leggere dati formattati da stdin |
setbuf |
Controllare il buffering del flusso |
_setmaxstdio |
Impostare un massimo per il numero dei file aperti contemporaneamente al livello del flusso I/O. |
setvbuf |
Controllare il buffering del flusso e la dimensione del buffer |
_snprintf , _snwprintf , _snprintf_s , _snprintf_s_l , _snwprintf_s _snwprintf_s_l |
Scrivere dati formattati di lunghezza specificata in una stringa |
_snscanf , _snwscanf , _snscanf_s , _snscanf_s_l , _snwscanf_s _snwscanf_s_l |
Leggere dati formattati di lunghezza specificata dal flusso dello standard input. |
sprintf , swprintf , sprintf_s , _sprintf_s_l , swprintf_s _swprintf_s_l |
Scrivere dati formattati in una stringa |
sscanf , swscanf , sscanf_s , _sscanf_s_l, swscanf_s , _swscanf_s_l |
Leggere dati formattati da una stringa |
_tempnam , _wtempnam |
Creare il filename temporaneo nella directory specificata |
tmpfile , tmpfile_s |
Creare un file temporaneo |
tmpnam , _wtmpnam , tmpnam_s _wtmpnam_s |
Creare un filename temporaneo |
ungetc , ungetwc |
Inserire caratteri in coda al flusso |
_vcprintf , _vcwprintf , _vcprintf_s , _vcprintf_s_l , _vcwprintf_s _vcwprintf_s_l |
Scrivere dati formattati nella console. |
vfprintf , vfwprintf , vfprintf_s , _vfprintf_s_l , vfwprintf_s _vfwprintf_s_l |
Scrivere dati formattati in un flusso |
vprintf , vwprintf , vprintf_s , _vprintf_s_l , vwprintf_s _vwprintf_s_l |
Scrivere dati formattati in stdout |
_vsnprintf , _vsnwprintf , vsnprintf_s , _vsnprintf_s _vsnprintf_s_l , , _vsnwprintf_s _vsnwprintf_s_l |
Scrivere dati formattati di lunghezza specificata nel buffer |
vsprintf , vswprintf , vsprintf_s , _vsprintf_s_l , vswprintf_s _vswprintf_s_l |
Scrivere dati formattati nel buffer |
Quando un programma inizia l'esecuzione, il codice di avvio automatico apre più flussi: standard input ((a cui punta stdin
), standard output (a cui punta stdout
) e standard error (a cui punta stderr
)). I flussi vengono indirizzati alla console (tastiera e schermo) per impostazione predefinita. Usare freopen
per reindirizzare stdin
, stdout
o stderr
a un file su disco o a un dispositivo.
I file aperti mediante le routine del flusso vengono memorizzati nel buffer per impostazione predefinita. Le stdout
funzioni e stderr
vengono scaricate ogni volta che sono piene o, se si scrive in un dispositivo carattere, dopo ogni chiamata alla libreria. Se un programma termina in modo anomalo, è possibile che i buffer di output non vengano scaricati, con conseguente perdita di dati. Utilizzare fflush
o _flushall
per assicurarsi che il buffer associato a un file specificato venga scaricato nel sistema operativo o che tutti i buffer aperti vengano scaricati. Il sistema operativo può memorizzare nella cache i dati prima di scriverli su disco. La funzionalità commit su disco garantisce che il contenuto del buffer scaricato non venga perso in caso di errore di sistema.
Esistono due modi per eseguire il commit del contenuto del buffer su disco:
Eseguire il collegamento con il file COMMODE.OBJ per impostare un flag globale di commit. L'impostazione predefinita del flag globale è
n
, per "no-commit."Impostare il flag della modalità su
c
confopen
o_fdopen
.
Qualsiasi file specificatamente aperto con il flag c
o n
si comporta in base al flag, indipendentemente dallo stato del flag globale di commit/no-commit.
Se il programma non chiude in modo esplicito un flusso, il flusso viene chiuso automaticamente al termine del programma. Tuttavia, è necessario chiudere un flusso al termine di un programma, perché il numero di flussi che possono essere aperti contemporaneamente è limitato. Per informazioni su questo limite, vedere _setmaxstdio
.
L'input può usare direttamente l'output solo con una chiamata corrispondente a fflush
o a una funzione di posizionamento di file (fseek
, fsetpos
o rewind
). L'input può essere seguito dall'output senza una chiamata di intervento a una funzione di posizionamento dei file, se l'operazione di input rileva la fine del file.