We/Wy strumienia

Te funkcje przetwarzają dane w różnych rozmiarach i formatach— od pojedynczych znaków do dużych struktur danych. Zapewniają one również buforowanie, co może poprawić wydajność. Domyślny rozmiar buforu strumienia to 4K. Te procedury mają wpływ tylko na bufory utworzone przez procedury biblioteki czasu wykonywania i nie mają wpływu na bufory utworzone przez system operacyjny.

Procedury we/wy strumienia

Procedura Używanie
clearerr, clearerr_s Wyczyść wskaźnik błędu dla strumienia
fclose Zamknij strumień
_fcloseall Zamknij wszystkie otwarte strumienie z wyjątkiem stdin, stdouti stderr
_fdopen, wfdopen Kojarzenie strumienia z deskryptorem plików otwartego pliku
feof Testowanie końca pliku w strumieniu
ferror Testowanie pod kątem błędu w strumieniu
fflush Opróżnianie strumienia do buforu lub urządzenia magazynu
fgetc, fgetwc Odczyt znaku ze strumienia getc (wersje funkcji i getwc)
_fgetchar, _fgetwchar Odczyt znaku z stdin (wersje getchar funkcji i getwchar)
fgetpos Pobieranie wskaźnika położenia strumienia
fgets, fgetws Odczytywanie ciągu ze strumienia
_fileno Pobieranie deskryptora plików skojarzonego ze strumieniem
_flushall Opróżnianie wszystkich strumieni do buforu lub urządzenia magazynu
fopen, _wfopen, fopen_s, _wfopen_s Otwieranie strumienia
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Zapisywanie sformatowanych danych do strumienia
fputc, fputwc Zapisywanie znaku w strumieniu (wersje putc funkcji i putwc)
_fputchar, _fputwchar Zapisz znak do stdout (wersje putchar funkcji i putwchar)
fputs, fputws Zapisywanie ciągu w strumieniu
fread Odczytywanie niesformatowanych danych ze strumienia
freopen, _wfreopen, freopen_s, _wfreopen_s Ponowne przypisywanie FILE wskaźnika strumienia do nowego pliku lub urządzenia
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Odczytywanie sformatowanych danych ze strumienia
fseek, _fseeki64 Przenieś położenie pliku do danej lokalizacji
fsetpos Ustawianie wskaźnika położenia strumienia
_fsopen, _wfsopen Otwieranie strumienia z udostępnianiem plików
ftell, _ftelli64 Pobieranie bieżącej pozycji pliku
fwrite Zapisywanie niesformatowanych elementów danych w celu przesyłania strumieniowego
getc, getwc Odczytywanie znaku ze strumienia (wersje fgetc makr i fgetwc)
getchar, getwchar Odczytaj znak z stdin (wersje fgetchar makr i fgetwchar)
_getmaxstdio Zwraca liczbę jednocześnie otwartych plików dozwolonych na poziomie we/wy strumienia.
gets_s, _getws_s Odczyt wiersza z stdin
_getw Odczytywanie danych binarnych int ze strumienia
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Zapisywanie sformatowanych danych do stdout
putc, putwc Zapisywanie znaku w strumieniu (wersje fputc makr i fputwc)
putchar, putwchar Zapisz znak do stdout (wersje fputchar makr i fputwchar)
puts, _putws Pisanie wiersza do strumienia
_putw Zapisywanie danych binarnych int do strumienia
rewind Przenieś położenie pliku na początek strumienia
_rmtmp Usuwanie plików tymczasowych utworzonych przez program tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Odczytywanie sformatowanych danych z stdin
setbuf Buforowanie strumienia sterowania
_setmaxstdio Ustaw maksymalną liczbę jednocześnie otwartych plików na poziomie we/wy strumienia.
setvbuf Buforowanie strumienia sterowania i rozmiar buforu
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l Zapisywanie sformatowanych danych o określonej długości do ciągu
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l Odczytywanie sformatowanych danych o określonej długości ze standardowego strumienia wejściowego.
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Zapisywanie sformatowanych danych w ciągu
sscanf, , swscanf, sscanf_s_sscanf_s_l, swscanf_s, _swscanf_s_l Odczytywanie sformatowanych danych z ciągu
_tempnam, _wtempnam Generowanie tymczasowej nazwy pliku w danym katalogu
tmpfile, tmpfile_s Tworzenie pliku tymczasowego
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Generowanie nazwy pliku tymczasowego
ungetc, ungetwc Odepchnij znak z powrotem do strumienia
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Zapisz sformatowane dane w konsoli programu .
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Zapisywanie sformatowanych danych do strumienia
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Zapisywanie sformatowanych danych do stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l Zapisywanie sformatowanych danych o określonej długości do buforu
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Zapisywanie sformatowanych danych do buforu

Po rozpoczęciu wykonywania programu kod uruchamiania automatycznie otwiera kilka strumieni: standardowe dane wejściowe (wskazywane przez stdin), standardowe dane wyjściowe (wskazywane przez stdout) i błąd standardowy (wskazywany przez stderr). Te strumienie są domyślnie kierowane do konsoli (klawiatury i ekranu). Użyj freopen polecenia , aby przekierować stdinplik , stdoutlub stderr do pliku dysku lub urządzenia.

Pliki otwierane przy użyciu procedur strumienia są domyślnie buforowane. Funkcje stdout i stderr są opróżniane za każdym razem, gdy są pełne lub, jeśli piszesz na urządzeniu znakowym, po każdym wywołaniu biblioteki. Jeśli program zakończy się nieprawidłowo, bufory wyjściowe mogą nie być opróżniane, co powoduje utratę danych. Użyj fflush polecenia lub _flushall , aby upewnić się, że bufor skojarzony z określonym plikiem jest opróżniany do systemu operacyjnego lub wszystkie otwarte bufory są opróżniane. System operacyjny może buforować dane przed zapisaniem ich na dysku. Funkcja commit-to-disk gwarantuje, że opróżniona zawartość buforu nie zostanie utracona, jeśli wystąpi awaria systemu.

Istnieją dwa sposoby zatwierdzania zawartości buforu na dysku:

  • Połącz z plikiem COMMODE. OBJ, aby ustawić flagę zatwierdzenia globalnego. Domyślnym ustawieniem flagi globalnej jest n" no-commit".

  • Ustaw flagę trybu na c wartość z fopen lub _fdopen.

Każdy plik otwarty z flagą lub n zachowuje się zgodnie z c flagą, niezależnie od stanu flagi globalnego zatwierdzenia/braku zatwierdzenia.

Jeśli program nie zamyka jawnie strumienia, strumień jest automatycznie zamykany po zakończeniu programu. Jednak po zakończeniu działania programu należy zamknąć strumień, ponieważ liczba strumieni, które mogą być otwarte w jednym momencie, jest ograniczona. Zobacz _setmaxstdio , aby uzyskać informacje na temat tego limitu.

Dane wejściowe mogą podążać bezpośrednio za danymi wyjściowymi tylko za pomocą interweniowania wywołania funkcji fflush lub do funkcji pozycjonowania plików (fseek, fsetpos, lub rewind). Dane wejściowe mogą być wykonywane po danych wyjściowych bez interweniowania wywołania funkcji pozycjonowania plików, jeśli operacja wejściowa napotka koniec pliku.

Zobacz też

Dane wejściowe i wyjściowe
Procedury czasu wykonywania języka Universal C według kategorii