stdio(3)

NAZWA
stdio - funkcje biblioteczne standardowego wejścia/wyjścia

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <stdio.h>

extern FILE  *stdin;
extern FILE  *stdout;
extern FILE  *stderr;

OPIS
Biblioteka standardowego wejścia/wyjścia zapewnia prosty i wydajny interfejs buforowanych strumieni wejścia/wyjścia. Wejście i wyjście jest przypisywane do logicznych strumieni danych, a fizyczna charakterystyka wejścia/wyjścia jest ukrywana. Funkcje i makra wypisano poniżej; więcej informacji jest dostępnych w poszczególnych stronach podręcznika systemowego.

Strumień jest wiązany z zewnętrznym plikiem (który może być fizycznym urządzeniem) przez otwarcie pliku, co może wymagać utworzenia nowego pliku. Utworzenie istniejącego pliku spowoduje odrzucenie jego wcześniejszej zawartości. Jeśli plik może obsłużyć żądania pozycjonowania (np. jest to plik na dysku, a nie terminal), to wskaźnik pozycji pliku związany ze strumieniem jest umieszczany na początku pliku (bajt zero), chyba że plik otwarto w trybie dopisywania. W trybie dopisywania nie jest określone, czy wskaźnik pozycji zostanie umieszczony na początku, czy na końcu pliku. Wskaźnik pozycji jest utrzymywany przez kolejne odczyty, zapisy i żądania pozycjonowania. Wszelkie wejście zachowuje się, jakby znaki były odczytywane przez kolejne wywołania do funkcji fgetc(3); wszelkie wyjście zachowuje się, jakby wszystkie znaki były zapisywane przez kolejne wywołania do funkcji fputc(3).

Plik jest oddzielany od strumienia przez zamknięcie pliku. Strumienie wyjściowe są opróżniane (wszelka niezapisana zawartość bufora jest transferowana do środowiska gospodarza) przed oddzieleniem strumienia z pliku. Wartość wskaźnika do obiektu FILE jest nieokreślona po zamknięciu pliku (śmieci).

Plik może być później otwarty ponownie, przez wykonanie tego samego lub innego programu, a jego zawartość odzyskana lub zmodyfikowana (jeśli może być spozycjonowany od początku). Jeśli główna funkcja powróci do swego pierwotnego wywołującego lub jeśli wywołano funkcję exit(3), wszystkie otwarte pliki są zamykane (stąd wszystkie strumienie wyjściowe są opróżniane) przed zakończeniem programu. Inne sposoby na zakończenie programu, takie jak abort(3), nie troszczą się o poprawne zamknięcie plików.

Przy uruchomieniu programu, trzy strumienie tekstowe są predefiniowane i nie trzeba ich jawnie otwierać: standardowe wejście (ang. standard input – do odczytu zwykłego wejścia), standardowe wyjście (ang. standard output – do wypisywania zwykłego wyjścia) oraz standardowe wyjście błędów (ang. standard error – do wypisywania wyjścia diagnostycznego). Strumienie tę są nazywane skrótowo stdin, stdout i stderr. Przy otwarciu, strumień standardowego wyjścia błędów nie jest w pełni buforowany; strumienie standardowego wejścia i wyjścia są w pełni buforowane wtedy i tylko wtedy, gdy strumienie te nie odnoszą się do urządzenia interaktywnego.

Strumienie wyjściowe odnoszące się do urządzeń terminali są domyślnie zawsze buforowane do wiersza; oczekujące wyjście do tych strumieni jest zapisywane automatycznie, gdy tylko odczytywany jest strumień wejściowy odnoszący się do urządzenia terminala. W przypadkach, gdy po wypisaniu części wiersza na terminal wyjściowy dokonywana jest znaczna ilość obliczeń, konieczne jest dokonanie fflush(3) na standardowym wyjściu przed zajęciem się obliczeniami, dzięki czemu pojawi się wyjście.

Biblioteka stdio jest częścią biblioteki libc i funkcje są ładowane automatycznie w miarę potrzeb przez cc(1). Rozdziały SKŁADNIA poniższych stron podręcznika systemowego wskazują, których plików include należy użyć, jak wygląda deklaracja kompilatora dla funkcji oraz które zmienne zewnętrzne przyjmują.

Nazwy, które zdefiniowano jako makra, nie mogą być użyte ponownie, przed usunięciem ich aktualnych definicji za pomocą #undef; dotyczy to: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEEK_CUR, TMP_MAX, clearerr, feof, ferror, fileno, getc, getchar, putc, putchar, stderr, stdin, stdout. Istnieją wersje zaimplementowane jako funkcje następujących makr: feof, ferror, clearerr, fileno, getc, getchar, putc i putchar; zostaną one użyte, jeśli usunie się definicje makr.

  Lista funkcji
Funkcja | Opis
clearerr(3) | sprawdza i zmienia stan strumienia
fclose(3) | zamyka strumień
fdopen(3) | funkcje otwarcia strumienia
feof(3) | sprawdza i zmienia stan strumienia
ferror(3) | sprawdza i zmienia stan strumienia
fflush(3) | wypróżnia bufory strumienia
fgetc(3) | odczytuje następny znak lub słowo ze strumienia wejściowego
fgetpos(3) | zmienia pozycję w strumieniu
fgets(3) | odczytuje wiersz ze strumienia
fileno(3) | zwraca liczbowy deskryptor strumienia z argumentu
fmemopen(3) | otwiera pamięć jako strumień
fopen(3) | funkcje otwarcia strumienia
fopencookie(3) | otwiera własny strumień
fprintf(3) | konwertuje formatowanie wyjściowe
fpurge(3) | wypróżnia bufory strumienia
fputc(3) | wypisuje znak lub słowo do strumienia
fputs(3) | wypisuje wiersz do strumienia
fread(3) | odczytuje/zapisuje strumień binarny
freopen(3) | funkcje otwarcia strumienia
fscanf(3) | konwertuje format wejściowy
fseek(3) | zmienia pozycję w strumieniu
fsetpos(3) | zmienia pozycję w strumieniu
ftell(3) | zmienia pozycję w strumieniu
fwrite(3) | odczytuje/zapisuje strumień binarny
getc(3) | odczytuje następny znak lub słowo ze strumienia wejściowego
getchar(3) | odczytuje następny znak lub słowo ze strumienia wejściowego
gets(3) | odczytuje wiersz ze strumienia
getw(3) | odczytuje następny znak lub słowo ze strumienia wejściowego
mktemp(3) | tworzy (unikatową) nazwę pliku tymczasowego
open_memstream(3) | otwiera strumień bufora pamięci dynamicznej
open_wmemstream(3) | otwiera strumień bufora pamięci dynamicznej
perror(3) | systemowe komunikaty o błędach
printf(3) | konwertuje formatowanie wyjściowe
putc(3) | wypisuje znak lub słowo do strumienia
putchar(3) | wypisuje znak lub słowo do strumienia
puts(3) | wypisuje wiersz do strumienia
putw(3) | wypisuje znak lub słowo do strumienia
remove(3) | usuwa wpis katalogu
rewind(3) | zmienia pozycję w strumieniu
scanf(3) | konwertuje format wejściowy
setbuf(3) | działania buforowania strumienia
setbuffer(3) | działania buforowania strumienia
setlinebuf(3) | działania buforowania strumienia
setvbuf(3) | działania buforowania strumienia
sprintf(3) | konwertuje formatowanie wyjściowe
sscanf(3) | konwertuje format wejściowy
strerror(3) | systemowe komunikaty o błędach
sys_errlist(3) | systemowe komunikaty o błędach
sys_nerr(3) | systemowe komunikaty o błędach
tempnam(3) | funkcje pliku tymczasowego
tmpfile(3) | funkcje pliku tymczasowego
tmpnam(3) | funkcje pliku tymczasowego
ungetc(3) | zwraca znak ze strumienia wejściowego
vfprintf(3) | konwertuje formatowanie wyjściowe
vfscanf(3) | konwertuje format wejściowy
vprintf(3) | konwertuje formatowanie wyjściowe
vscanf(3) | konwertuje format wejściowy
vsprintf(3) | konwertuje formatowanie wyjściowe
vsscanf(3) | konwertuje format wejściowy

STANDARDY
C11, POSIX.1-2008.

HISTORIA
C89, POSIX.1-2001.

ZOBACZ TAKŻE
close(2), open(2), read(2), write(2), stdout(3), unlocked_stdio(3)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.