Podstawy programowania Tomasz Tyksiński
Wyższa Szkota Nauk Humanistycznych i Dziennikarstwa
Pliki służą do przechowywania danych na dysku, dostęp do plików realizowany jest za pomocą zmiennej wskaźnikowej do typu FILE (w języku C) lub za pomocą strumieni (w języku C++), podobnie do wczytywania i wyprowadzania danych.
Obsługę plików można realizować na poziomie tekstu (pliki tekstowe) lub bloków danych (pliki binarne). Przed wykorzystaniem plików należy zawsze plik otworzyć, następuje wówczas powiązanie danego pliku dyskowego (dostępnego poprzez nazwę pliku) ze zmienną plikową. Podczas otwierania pliku decydujemy się na tryb otwarcia pliku (odczyt, zapis, dodawanie danych na końcu pliku lub tryby mieszane) oraz wybór pliku tekstowego lub binarnego.
Po otwarciu pliku możemy zapisywać dane do plików, odczytywać dane z pliku, przesuwać głowicę w pliku.
Po zakończeniu pracy z plikiem, należy go zamknąć.
W języku C, obsługę pliku tekstowego do odczytu można przedstawić następującym przykładem
FILE* plik = NULL; plik = fopen("dane.txt", "rt"); if(plik!=NULL) { char znak;
while(!feof(plik)) {
znak = fgetc(plik); printf("%c", znak);
fclose(plik);
else
printf("Błądotwarcia pliku\n");
// deklaracja zmiennej plikowej // otwarcie pliku do odczytu
// jeżeli nie ma końca pliku // odczytaj jeden znak / / wypisz jeden znak
// zamknij plik
1. Zmodyfikuj powyższy przykład, tak by wynik był zapisywany do pliku dane2.txt zamiast na ekran.
2. Zmień sposób działania zadania 1 na plik binarny. Zmień funkcje otwierania, odczytu i zapisu danych.
W przypadku obsługi strumieniowej plików w C++ wykorzystujemy zmienne typu f stream, if stream, of stream. Otwieramy plik deklarując zmienną plikową (obiekt).
Przykładowo
fstream plik("dane.txt", ios::in| ios::out);
// otwarcie pliku do odczytu i zapisu
Zmienna typu ifstream dotyczy plików do odczytu, ofstream do zapisu.
Po otwarciu pliku możemy zapisywać dane tekstowo z wykorzystaniem operatora «, odczytywać tekstowo za pomocą operatora ». Przykładowo:
plik « x « « y « « z « endl; // np. 1,2,3
plik » tekst; // odczyt do białego znaku
17