Stream I/O

Ezek a függvények különböző méretben és formátumban dolgozzák fel az adatokat az egykarakterektől a nagy adatstruktúrákig. Pufferelést is biztosítanak, amely javíthatja a teljesítményt. A streampuffer alapértelmezett mérete 4K. Ezek a rutinok csak a futásidejű kódtár rutinjai által létrehozott puffereket érintik, és nincs hatással az operációs rendszer által létrehozott pufferekre.

I/O-rutinok streamelése

Rutin Használd
clearerr, clearerr_s Hibajelző törlése a streamhez
fclose Stream bezárása
_fcloseall Zárja be az összes nyitott streamet, kivéve stdin, stdoutés stderr
_fdopen, wfdopen Stream társítása a megnyitott fájl leírójával
feof A fájl végének tesztelése streamen
ferror Hiba tesztelése streamen
fflush Stream kiürítése pufferbe vagy tárolóeszközre
fgetc, fgetwc Karakter olvasása streamből (függvényverziók getc és getwc)
_fgetchar, _fgetwchar Karakter olvasása ( stdin függvényverziók getchar és getwchar)
fgetpos Stream helyzetjelzőjének lekérése
fgets, fgetws Sztring olvasása streamből
_fileno Streamhez társított fájlleíró lekérése
_flushall Az összes stream kiürítése pufferbe vagy tárolóeszközre
fopen, _wfopen, fopen_s_wfopen_s Stream megnyitása
fprintf, _fprintf_l, fwprintf, _fwprintf_lfprintf_s, _fprintf_s_l, fwprintf_s_fwprintf_s_l Formázott adatok írása streameléshez
fputc, fputwc Karakter írása streambe (függvényverziók putc és putwc)
_fputchar, _fputwchar Karakter írása stdout (és putcharfüggvényverzióiputwchar)
fputs, fputws Sztring írása streameléshez
fread Nem formázott adatok olvasása streamből
freopen, _wfreopen, freopen_s_wfreopen_s Streammutató újbóli hozzárendelése FILE új fájlhoz vagy eszközhöz
fscanf, fwscanf,fscanf_s , _fscanf_s_lfwscanf_s_fwscanf_s_l Formázott adatok olvasása streamből
fseek, _fseeki64 Fájlpozíció áthelyezése adott helyre
fsetpos A stream helyzetjelzőjének beállítása
_fsopen, _wfsopen Stream megnyitása fájlmegosztással
ftell, _ftelli64 Aktuális fájlpozíció lekérése
fwrite Formázatlan adatelemek írása streameléshez
getc, getwc Karakter olvasása a streamből (és fgetcmakróverzióifgetwc)
getchar, getwchar Karakter olvasása (stdinés fgetcharmakróverzióifgetwchar)
_getmaxstdio A stream I/O szintjén engedélyezett egyidejűleg megnyitott fájlok számát adja vissza.
gets_s, _getws_s Sor olvasása innen: stdin
_getw Bináris int olvasása streamből
printf, _printf_l, wprintf, _wprintf_lprintf_s, _printf_s_l, wprintf_s_wprintf_s_l Formázott adatok írása stdout
putc, putwc Karakter írása streambe (és fputcmakróverzióifputwc)
putchar, putwchar Karakter írása stdout (és fputcharmakróverzióifputwchar)
puts, _putws Sor írása streameléshez
_putw Bináris int írás streameléshez
rewind Fájlhelyzet áthelyezése a stream elejére
_rmtmp A következő által létrehozott ideiglenes fájlok eltávolítása: tmpfile
scanf, _scanf_l, wscanf, _wscanf_lscanf_s, _scanf_s_l, wscanf_s_wscanf_s_l Formázott adatok olvasása a következőből: stdin
setbuf Stream pufferelésének szabályozása
_setmaxstdio Állítsa be az egyidejűleg megnyitott fájlok számának maximális számát a stream I/O szintjén.
setvbuf Stream pufferelésének és pufferméretének szabályozása
_snprintf, _snwprintf,_snprintf_s , _snprintf_s_l_snwprintf_s_snwprintf_s_l Megadott hosszúságú formázott adatok írása sztringre
_snscanf, _snwscanf,_snscanf_s , _snscanf_s_l_snwscanf_s_snwscanf_s_l A szabványos bemeneti adatfolyamból beolvashatja a megadott hosszúságú formázott adatokat.
sprintf, swprintf,sprintf_s , _sprintf_s_lswprintf_s_swprintf_s_l Formázott adatok írása sztringbe
sscanf, swscanf,sscanf_s _sscanf_s_l, swscanf_s, _swscanf_s_l Formázott adatok olvasása sztringből
_tempnam, _wtempnam Ideiglenes fájlnév létrehozása adott könyvtárban
tmpfile, tmpfile_s Ideiglenes fájl létrehozása
tmpnam, _wtmpnam, tmpnam_s_wtmpnam_s Ideiglenes fájlnév létrehozása
ungetc, ungetwc Karakter visszaküldése a streambe
_vcprintf, _vcwprintf,_vcprintf_s , _vcprintf_s_l_vcwprintf_s_vcwprintf_s_l Formázott adatok írása a konzolra.
vfprintf, vfwprintf,vfprintf_s , _vfprintf_s_lvfwprintf_s_vfwprintf_s_l Formázott adatok írása streameléshez
vprintf, vwprintf,vprintf_s , _vprintf_s_lvwprintf_s_vwprintf_s_l Formázott adatok írása stdout
_vsnprintf, _vsnwprintf,vsnprintf_s , _vsnprintf_s, _vsnprintf_s_l_vsnwprintf_s_vsnwprintf_s_l Formázott adatok írása megadott hosszúságú pufferbe
vsprintf, vswprintf,vsprintf_s , _vsprintf_s_lvswprintf_s_vswprintf_s_l Formázott adatok írása pufferbe

Amikor egy program elkezdi a végrehajtást, az indítási kód automatikusan több streamet nyit meg: standard bemenetet (erre stdinmutat), standard kimenetet (erre stdoutmutat), és standard hibát (erre stderrmutat). Ezek a streamek alapértelmezés szerint a konzolra (billentyűzetre és képernyőre) vannak irányítva. Lemezfájlra vagy freopen eszközre való átirányításra stdinstdouthasználhatóstderr.

A stream-rutinokkal megnyitott fájlok alapértelmezés szerint pufferelve vannak. A stdout függvények és stderr a függvények minden egyes kódtár-hívás után ki lesznek ürítve, amikor megtelnek, vagy ha egy karaktereszközre ír. Ha egy program rendellenesen leáll, előfordulhat, hogy a kimeneti pufferek nem lesznek kiürítve, ami adatvesztést eredményez. Használja fflush vagy _flushall győződjön meg arról, hogy a megadott fájlhoz társított puffer ki van ürítve az operációs rendszerbe, vagy az összes nyitott puffer ki van ürítve. Az operációs rendszer gyorsítótárazhatja az adatokat, mielőtt lemezre íratja azokat. A véglegesítés a lemezre funkció biztosítja, hogy a kiürített puffer tartalma ne vesszenek el rendszerhiba esetén.

A puffertartalmak lemezre történő véglegesítésének két módja van:

  • Hivatkozás a COMMODE fájlra. OBJ globális véglegesítési jelző beállításához. A globális jelölő alapértelmezett beállítása a n"no-commit" (véglegesítés nélküli) érték.
  • Állítsa a módjelzőt a következőre c : with fopen vagy _fdopen.

A kifejezetten a c jelölővel megnyitott n fájlok a jelölőnek megfelelően viselkednek, függetlenül a globális véglegesítési/véglegesítés nélküli jelölő állapotától.

Ha a program nem zárja be explicit módon a streamet, a program leállásakor a stream automatikusan bezáródik. Egy streamet azonban be kell zárnia, amikor a program befejezi azt, mivel az egyszerre megnyitható streamek száma korlátozott. Erről _setmaxstdio a korlátról további információt talál.

A bemenet közvetlenül csak egy fájlhelyezési függvényhez (vagy fflushfseek) irányuló beavatkozó hívással fsetpos követhetirewind a kimenetet. A bemenetet a kimenet követheti anélkül, hogy beavatkozó hívás lenne egy fájlhelyezési függvényhez, ha a bemeneti művelet a fájl végére kerül.

Lásd még

Bemenet és kimenet
Univerzális C futtatókörnyezeti rutinok kategória szerint