JezykC11, Podstawy programowania

[ Pobierz całość w formacie PDF ]
10. STANDARDOWE OPERACJE NA PLIKACH W JĘZYKU C
W języku ANSI C zbiór funkcji operujących na urządzeniach zewnętrznych nie jest częścią samego
języka - tworzy on jedną ze
standardowych bibliotek
dołączonych do języka. Plikiem nagłówkowym
tej biblioteki jest
stdio.h
(standard input and output)
. Sama biblioteka skojarzona z tym nagłówkiem
jest największą spośród bibliotek ANSI C.
Zbiór funkcji zawartych w tej bibliotece zakłada model systemu operacyjnego zgodny z wczesnymi
wersjami systemu Unix - przyjmuje, że każdy program w momencie uruchomienia ma przydzielone
trzy
pliki standardowe
, odpowiednio:
-
stdin
(standard input)
- standardowe wejście;
-
stdout
(standard output)
- standardowe wyjście;
-
stderr
(standard error)
- standardowe wyjście błędów.
Przez domniemanie pliki te są skojarzone z terminalem użytkownika programu, czyli plik
stdin
odpowiada ciągowi znaków wprowadzanych z klawiatury, a pliki
stdout
i
stderr
- ciągom znaków
wyprowadzanych na ekran terminala. W poleceniu uruchomienia programu użytkownik (używając
znaków przekierowania < , > lub >>) może je zastąpić dowolnymi innymi plikami tekstowymi.
Funkcje standardowej bibloteki wejścia-wyjścia są zorientowane na przetwarzanie
plików tekstowych
.
Zakładają one następujący model pliku:
wskaźnik
położenia
EOF
Wskaźnik położenia w pliku pełni rolę abstrakcyjnej „głowicy zapisująco-odczytującej”, która może
zapisywać lub odczytywać kolejne znaki w (z) pliku i przesuwać się przy tym od początku pliku aż do
napotkania jego
znacznika końca
EOF (End Of File)
.
Plik tekstowy składa się z ciągu znaków podzielonego na
linie
znakami
zmiany linii
(new line)
.
znacznik zmiany linii
znacznik końca pliku
Uwaga
W zależności od systemu operacyjnego zmiana linii może być oznaczona jednym lub parą znaków.
Zbiór funkcji bibliotecznych
stdio
stanowi dość bogatą kolekcję umożliwiającą zarówno korzystanie
ze standardowego wejścia i wyjścia, jak i z innych plików (głównie tekstowych, ale również binarnych),
zmianę bieżących przekierowań, tworzenie, usuwanie i zmianę nazw plików i wiele innych czynności.
Ogólnym założeniem jest, że przed rozpoczęciem wykonywania operacji na pliku plik ten powinien
zostać
otwarty
, a po zakończeniu wykonywania operacji powinien zostać
zamknięty
. Otwarcie pliku
powoduje związanie z nim abstrakcyjnego obiektu zwanego
strumieniem
(lub
wskaźnikiem do pliku
).
Nazwy
stdin
,
stdout
i
stderr
są nazwami stałych, symbolizujących strumienie standardowe (programista
nie może przyporządkowywać im innych znaczeń).
Pliki skojarzone ze strumieniami standardowymi są automatycznie otwierane w momencie rozpoczęcia
wykonywania programu i automatycznie zamykane w momencie zakończenia jego wykonywania -
programista nie musi umieszczać tych operacji w swoim programie.
Poniżej zostaną omówione wybrane (najczęściej używane) funkcje z biblioteki
stdio
. Funkcje te nie
uwzględniają specyficznych cech wpółczesnych uniksowych systemów plików (takich, jak na przykład
prawa własności plików). Cechy te uwzględnione są przez biblioteki uniksowe nie należące do ANSI C.
Z punktu widzenia biblioteki
stdio
strumień jest wskaźnikiem do obiektu danych predefiniowanego
typu FILE (zmienna typu FILE zawiera wszystkie informacje potrzebne do bieżącej obsługi otwartego
pliku, w szczególności informację o wskaźniku położenia).
Plik tekstowy może być otwarty w jednym z następujących
trybów
:
”r” - otwarcie do czytania (plik musi istnieć, wskaźnik położenia na początku);
”w” - otwarcie do pisania (plik jest utworzony na nowo jako pusty);
”a” - otwarcie do dopisywania (jeśli plik nie istniał, jest utworzony, wskaźnik położenia na końcu);
”r+” - otwarcie do aktualizacji (do pisania i czytania, wskaźnik położenia na początku);
”w+” - otwarcie do aktualizacji (plik jest utworzony na nowo jako pusty);
”a+” - otwarcie do aktualizacji (jeśli plik nie istniał, jest utworzony, wskaźnik położenia na końcu).
W powyższych napisach oznaczających tryby otwarcia może dodatkowo być umieszczona na końcu
litera b (przykładowo ”rb” lub ”r+b”), co oznacza, że otwarty plik ma być traktowany nie jako
tekstowy, ale jako binarny.
FILE *fopen (const char *nazwa, const char *tryb)
Funkcja ta otwiera plik o podanej nazwie (jeśli plik nie jest umieszczony w katalogu bieżącym, nazwa
powinna być poprzedzona ścieżką dostępu) w podanym trybie. Jeśli wywołanie funkcji powiedzie się,
zwraca ona wskaźnik do obiektu pliku (strumień), zaś jeśli nie, zwraca NULL.
FILE *freopen (const char *nazwa, const char *tryb, FILE *strumień)
Funkcja zmienia przyporządkowanie używanego już wcześniej strumienia, przekierowując go do
pliku o podanej nazwie otwartego w podanym trybie. Jeśli wywołanie funkcji powiedzie się, zwraca
ona *strumień, jeśli nie, zwraca NULL. Funkcja ta używana jest głównie do przekierowywania
w programie strumieni standardowych
stdin
,
stdout
i
stderr
.
int fclose (FILE *strumień)
Funkcja zamyka plik, z którym skojarzony jest dany strumień, zwraca 0 w przypadku sukcesu, zaś
EOF w przypadku błędu.
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • mexxo.keep.pl