Dela via


Strömma I/O

Dessa funktioner bearbetar data i olika storlekar och format, från enkla tecken till stora datastrukturer. De ger också buffring, vilket kan förbättra prestandan. Standardstorleken för en dataströmbuffert är 4K. Dessa rutiner påverkar endast buffertar som skapats av rutinerna för körningsbibliotek och har ingen effekt på buffertar som skapats av operativsystemet.

Strömma I/O-rutiner

Rutin Använd
clearerr, clearerr_s Tydlig felindikator för dataström
fclose Stäng ström
_fcloseall Stäng alla öppna strömmar utom stdin, stdoutoch stderr
_fdopen, wfdopen Associera dataström med filbeskrivning för öppen fil
feof Testa för slutet av filen i dataströmmen
ferror Test för fel i dataström
fflush Spola dataström till buffert- eller lagringsenhet
fgetc, fgetwc Läsa tecken från dataström (funktionsversioner av getc och getwc)
_fgetchar, _fgetwchar Läs tecken från stdin (funktionsversioner av getchar och getwchar)
fgetpos Hämta positionsindikator för ström
fgets, fgetws Läsa sträng från dataström
_fileno Hämta filbeskrivning som är associerad med dataström
_flushall Rensa alla strömmar till buffert- eller lagringsenhet
fopen, _wfopen, ,fopen_s_wfopen_s Öppna dataström
fprintf, _fprintf_l, fwprintf, _fwprintf_l,fprintf_s , , _fprintf_s_l, , fwprintf_s_fwprintf_s_l Skriva formaterade data att strömma
fputc, fputwc Skriva ett tecken till en ström (funktionsversioner av putc och putwc)
_fputchar, _fputwchar Skriva tecken till stdout (funktionsversioner av putchar och putwchar)
fputs, fputws Skriv sträng till dataström
fread Läsa oformaterade data från dataström
freopen, _wfreopen, ,freopen_s_wfreopen_s FILE Tilldela om strömpekaren till ny fil eller enhet
fscanf, fwscanf, fscanf_s, _fscanf_s_l, , , fwscanf_s_fwscanf_s_l Läsa formaterade data från dataström
fseek, _fseeki64 Flytta filposition till angiven plats
fsetpos Ange positionsindikator för ström
_fsopen, _wfsopen Öppna dataström med fildelning
ftell, _ftelli64 Hämta aktuell filposition
fwrite Skriva oformaterade dataobjekt att strömma
getc, getwc Läsa tecken från strömmen (makroversioner av fgetc och fgetwc)
getchar, getwchar Läs tecken från stdin (makroversioner av fgetchar och fgetwchar)
_getmaxstdio Returnerar antalet samtidiga öppna filer som tillåts på dataströmmens I/O-nivå.
gets_s, _getws_s Läs rad från stdin
_getw Läsa binärt int från dataström
printf, _printf_l, wprintf, _wprintf_l,printf_s , , _printf_s_l, , wprintf_s_wprintf_s_l Skriva formaterade data till stdout
putc, putwc Skriva tecken till en ström (makroversioner av fputc och fputwc)
putchar, putwchar Skriva tecken till stdout (makroversioner av fputchar och fputwchar)
puts, _putws Skriv rad till dataström
_putw Skriva binärt int till dataström
rewind Flytta filpositionen till början av dataströmmen
_rmtmp Ta bort temporära filer som skapats av tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s , , _scanf_s_l, , wscanf_s_wscanf_s_l Läsa formaterade data från stdin
setbuf Styra dataströmbuffertning
_setmaxstdio Ange ett maxvärde för antalet filer som öppnas samtidigt på I/O-dataströmnivån.
setvbuf Kontrollera dataströmbuffertning och buffertstorlek
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, , , _snwprintf_s_snwprintf_s_l Skriva formaterade data med angiven längd till sträng
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, , , _snwscanf_s_snwscanf_s_l Läsa formaterade data med en angiven längd från standardindataströmmen.
sprintf, swprintf, sprintf_s, _sprintf_s_l, , , swprintf_s_swprintf_s_l Skriva formaterade data till sträng
sscanf, swscanf,sscanf_s , _sscanf_s_l, swscanf_s, _swscanf_s_l Läsa formaterade data från sträng
_tempnam, _wtempnam Generera tillfälligt filnamn i den angivna katalogen
tmpfile, tmpfile_s Skapa temporär fil
tmpnam, _wtmpnam, ,tmpnam_s_wtmpnam_s Generera tillfälligt filnamn
ungetc, ungetwc Skicka tillbaka tecknet till strömmen
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, , , _vcwprintf_s_vcwprintf_s_l Skriva formaterade data till konsolen.
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, , , vfwprintf_s_vfwprintf_s_l Skriva formaterade data att strömma
vprintf, vwprintf, vprintf_s, _vprintf_s_l, , , vwprintf_s_vwprintf_s_l Skriva formaterade data till stdout
_vsnprintf, _vsnwprintf,vsnprintf_s , _vsnprintf_s, _vsnprintf_s_l, , , _vsnwprintf_s_vsnwprintf_s_l Skriva formaterade data med angiven längd för buffert
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, , , vswprintf_s_vswprintf_s_l Skriva formaterade data till buffert

När ett program börjar köras öppnar startkoden automatiskt flera strömmar: standardindata (pekas på av stdin), standardutdata (pekas på av stdout) och standardfel (pekas på av stderr). Dessa strömmar dirigeras som standard till konsolen (tangentbord och skärm). Använd freopen för att omdirigera stdin, stdouteller stderr till en diskfil eller en enhet.

Filer som öppnas med hjälp av strömrutinerna buffrad som standard. Funktionerna stdout och stderr rensas när de är fulla eller, om du skriver till en teckenenhet, efter varje biblioteksanrop. Om ett program avslutas onormalt kan det hända att utdatabuffertar inte rensas, vilket resulterar i dataförlust. Använd fflush eller _flushall för att säkerställa att bufferten som är associerad med en angiven fil rensas till operativsystemet eller att alla öppna buffertar töms. Operativsystemet kan cachelagrat data innan de skrivs till disken. Funktionen commit-to-disk säkerställer att det tömda buffertinnehållet inte går förlorat om det uppstår ett systemfel.

Det finns två sätt att checka in buffertinnehåll på disk:

  • Länka till filen COMMODE. OBJ för att ange en global incheckningsflagga. Standardinställningen för den globala flaggan är n, för "no-commit".
  • Ange lägesflaggan till c med fopen eller _fdopen.

Alla filer som öppnas specifikt med antingen c flaggan eller n fungerar enligt flaggan, oavsett status för den globala inchecknings-/no-commit-flaggan.

Om programmet inte uttryckligen stänger en ström stängs strömmen automatiskt när programmet avslutas. Du bör dock stänga en ström när programmet har slutförts med den, eftersom antalet strömmar som kan vara öppna samtidigt är begränsat. Mer _setmaxstdio information om den här gränsen finns i.

Indata kan endast följa utdata direkt med ett mellanliggande anrop till fflush eller till en filplaceringsfunktion (fseek, fsetposeller rewind). Indata kan följas av utdata utan ett mellanliggande anrop till en filplaceringsfunktion, om indataåtgärden stöter på slutet av filen.

Se även

Indata och utdata
Universal C-körningsrutiner efter kategori