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 Usare
clearerr, clearerr_s Eliminare l'indicatore di errore per il flusso
fclose Chiudere il flusso
_fcloseall Chiudere tutti i flussi aperti tranne stdin, stdoute 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, stdouto 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 con fopen 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, fsetposo 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.

Vedi anche

Input e output
Routine di Universal C Runtime per categoria