Share via


I/O proudu

Tyto funkce zpracovávají data v různých velikostech a formátech, od jednotlivých znaků po velké datové struktury. Poskytují také ukládání do vyrovnávací paměti, což může zlepšit výkon. Výchozí velikost vyrovnávací paměti datového proudu je 4 KB. Tyto rutiny ovlivňují pouze vyrovnávací paměti vytvořené rutinami knihovny runtime a nemají žádný vliv na vyrovnávací paměti vytvořené operačním systémem.

Rutiny vstupně-výstupních operací streamu

Rutina Použít
clearerr, clearerr_s Vymazat indikátor chyby pro stream
fclose Zavření streamu
_fcloseall Zavření všech otevřených datových proudů kromě stdin, stdouta stderr
_fdopen, wfdopen Přidružení streamu k popisovači souboru otevřeného souboru
feof Testování konce souboru ve streamu
ferror Test chyby ve streamu
fflush Vyprázdnění streamu do vyrovnávací paměti nebo úložného zařízení
fgetc, fgetwc Čtení znaku ze streamu (verze getc funkcí a getwc)
_fgetchar, _fgetwchar Čtení znaku z stdin (verze getchar funkcí a getwchar)
fgetpos Získání ukazatele pozice datového proudu
fgets, fgetws Čtení řetězce ze streamu
_fileno Získání popisovače souboru přidruženého ke streamu
_flushall Vyprázdnění všech datových proudů do vyrovnávací paměti nebo úložného zařízení
fopen, _wfopen, fopen_s, _wfopen_s Otevření streamu
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Zápis formátovaných dat do streamu
fputc, fputwc Zápis znaku do datového proudu (verze putc funkcí a putwc)
_fputchar, _fputwchar Zápis znaku do stdout (verze putchar funkcí a putwchar)
fputs, fputws Zápis řetězce do streamu
fread Čtení neformátovaných dat ze streamu
freopen, _wfreopen, freopen_s, _wfreopen_s Změna přiřazení FILE ukazatele streamu na nový soubor nebo zařízení
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Čtení formátovaných dat ze streamu
fseek, _fseeki64 Přesunout umístění souboru do daného umístění
fsetpos Nastavit ukazatel pozice datového proudu
_fsopen, _wfsopen Otevření streamu se sdílením souborů
ftell, _ftelli64 Získání aktuální pozice souboru
fwrite Zápis neformátovaných datových položek do streamu
getc, getwc Čtení znaku ze streamu fgetc (verze maker a fgetwc)
getchar, getwchar Čtení znaku fgetchar z stdin (verze maker afgetwchar)
_getmaxstdio Vrátí počet současně otevřených souborů povolených na úrovni vstupně-výstupních operací datového proudu.
gets_s, _getws_s Čtení řádku z stdin
_getw Čtení binárního souboru int ze streamu
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Zápis formátovaných dat do stdout
putc, putwc Zápis znaku do datového proudu (verze fputc maker a fputwc)
putchar, putwchar Zápis znaku do stdout (verze fputchar maker a fputwchar)
puts, _putws Zápis řádku do streamu
_putw Zápis binárního souboru int do streamu
rewind Přesunutí pozice souboru na začátek streamu
_rmtmp Odebrání dočasných souborů vytvořených pomocí tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Čtení formátovaných dat z stdin
setbuf Řízení ukládání datových proudů do vyrovnávací paměti
_setmaxstdio Nastavte maximální počet současně otevřených souborů na úrovni vstupně-výstupních operací datového proudu.
setvbuf Řízení ukládání datových proudů do vyrovnávací paměti a velikosti vyrovnávací paměti
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l Zápis formátovaných dat zadané délky do řetězce
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l Čtení formátovaných dat zadané délky ze standardního vstupního datového proudu
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Zápis formátovaných dat do řetězce
sscanf, swscanf, _sscanf_s_l sscanf_s, swscanf_s, _swscanf_s_l Čtení formátovaných dat z řetězce
_tempnam, _wtempnam Vygenerování dočasného názvu souboru v daném adresáři
tmpfile, tmpfile_s Vytvoření dočasného souboru
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Generování dočasného názvu souboru
ungetc, ungetwc Nasdílení znaku zpět do datového proudu
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Zapište do konzoly formátovaná data.
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Zápis formátovaných dat do streamu
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Zápis formátovaných dat do stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l Zápis formátovaných dat zadané délky do vyrovnávací paměti
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Zápis formátovaných dat do vyrovnávací paměti

Když program zahájí provádění, spouštěcí kód automaticky otevře několik datových proudů: standardní vstup (odkazován na stdin), standardní výstup (odkaz na stdout) a standardní chybu (na kterou stderrodkazuje ). Tyto streamy jsou ve výchozím nastavení směrovány na konzolu (klávesnici a obrazovku). Slouží freopen k přesměrování stdin, stdoutnebo stderr na diskový soubor nebo zařízení.

Soubory otevřené pomocí rutin streamu se ve výchozím nastavení ukládají do vyrovnávací paměti. Funkce stdout se stderr vyprázdní vždy, když jsou plné, nebo pokud píšete na znakové zařízení, po každém volání knihovny. Pokud se program ukončí neobvykle, výstupní vyrovnávací paměti nemusí být vyprázdněny, což vede ke ztrátě dat. Použijte fflush nebo _flushall zajistěte, aby byla vyrovnávací paměť přidružená k zadanému souboru vyprázdněna do operačního systému nebo aby byly vyprázdněny všechny otevřené vyrovnávací paměti. Operační systém může data před zápisem na disk ukládat do mezipaměti. Funkce commit-to-disk zajišťuje, že se obsah vyprázdněné vyrovnávací paměti neztratí, pokud dojde k selhání systému.

Obsah vyrovnávací paměti na disk můžete potvrdit dvěma způsoby:

  • Propojení se souborem COMMODE. OBJ pro nastavení příznaku globálního potvrzení. Výchozí nastavení globálního příznaku je npro "no-commit".

  • Nastavte příznak režimu na c hodnotu s fopen nebo _fdopen.

Jakýkoli soubor, který je výslovně otevřen s příznakem c nebo n příznakem, se chová podle příznaku bez ohledu na stav globálního potvrzení nebo příznaku no-commit.

Pokud váš program stream explicitně nezavře, po ukončení programu se datový proud automaticky zavře. Datový proud byste ale měli zavřít, jakmile se s ním program dokončí, protože počet datových proudů, které je možné otevřít najednou, je omezený. Informace _setmaxstdio o tomto limitu najdete v tomto limitu.

Vstup může sledovat výstup přímo pouze při volání fflush do nebo do funkce umístění souboru (fseek, fsetposnebo rewind). Za vstupem může následovat výstup bez volání funkce umístění souboru, pokud vstupní operace narazí na konec souboru.

Viz také

Vstup a výstup
Rutiny UCRT (Universal C runtime) podle kategorie