PLIKI


Operacje na pilikach często są pomijane przez wiele osób, bo każdy myśli po co mu to. Ale czasem przydaje się znajomość działania na plikach, bo jest to bardzo praktyczne. Bo po co przepisywać jakieś dziwne tabelki albo liczyć ręcznie wszystko jak może napisać program. Który policzy wszystko za Ciebie (tak wiem jest jeszcze Excel, ale fajnie jest sobie taki program napisać samemu). Czasem także potrzebujemy zapisywać do pliku wynik prac naszego programu, a wtedy znajomość kilku bardzo prostych funkcji jest bardzo przydatna. Albo po prostu chcemy zaliczyć kolokwium, które zawiera ten dział. Wtedy znajomość „plików” bardzo nam się przyda, albo znajomość kogoś, kto już się z plikami zaznajomił :P.

Deklaracja:

FILE *nazwa;

np.:
FILE *plik;

FILE – to typ zmiennej, a żeby operować na plikach potrzebujemy wskazania na niego.

Do otwarcia pliku używamy funkcji fopen:

(nazwa_zmiennej)=fopen(„ścieżka_do_pliku”, „tryb_otwarcia”);

np.:
plik=fopen(„C:\folder\pliczek.txt”, „wt”);

Tryb otwarcia definiowany jest przez dwie literki. Pierwsza określa co chcemy robić, a druga w jaki sposób.
Pierwsza:
r - czytanie tekstu (w tym trycie możemy tylko czytać naszego
pliku kursor ustawiany jest na początku naszego pliku).
wzapisywanie do pliku (w tym trybie do pliku możemy zapisywać,
bardzo ważne jest, aby pamiętać o tym, że jeśli podamy ścieżkę
do istniejącego pliku to utracimy jego zawartość
).

aaktualizowanie tekstu (w tym trybie możemy dopisywać tekst do
pliku, czyli jak już istniejący plik to kursor będzie
ustawiony na końcu pliku a zawartość nie będzie naruszona).


Druga:

t- tryb tekstowy(domyślna, jak napiszemy tylko pierwszą to
oznacza, że mamy tryb tekstowy). To jest jaki naturalny tryb,
czyli jak zapiszemy jakiś tekst i potem otworzymy plik to
będziemy mogli sobie przeczytać to co zapisaliśmy w jakimś
ludzkim języku.
b- tryb binarny, tekst traktujemy jako bajty, czyli jak zapiszemy
sobie jakiś tekst w tym trybie to po otwarciu naszego pliku
będziemy mieli jakieś znaczki. Natomiast ten tryb wygodny jest
jeśli będziemy chcieli przechowywać liczby, ponieważ liczbę
całkowitą możemy zapisać na 4 bajtach, a liczbę
zmiennoprzecinkową podwójnej precyzji na 8. Natomiast w trybie
tekstowym każda cyfra jest traktowana jako osobny bajt.

Jeśli plik został prawidłowo otwarty to funkcja fopen zwróci wartość 1 natomiast, gdy wystąpił błąd wartość 0.

Jak już mamy plik otwarty to musimy pamiętać, aby ten plik zamknąć wedle zasady „Co zostało otwarto, azalisz musi zamknięte zostać”.

Do zamykanie pliku służy funkcja fclose i za argument przyjmuje nasze wskazanie na plik.

np.:
fclose(plik); // plik zostaje zamknięty i zapisany.


OBSŁUGA PLIKÓW BINARNYCH

ODCZYT:

Do czytania pliku używamy funkcji fread.

fread(gdzie,co,ile,z_czego);

gdzie – zmienna lub tablica, bo tą funkcją możemy czytać więcej
danych niż jeden.

Co – rozmiar tego co chcemy przeczytać

ile – ile elementów ma przeczytać

z_czego – wskaźnik naszego pliku


np.:
fread(x,sizeof(int),1,plik); // funkcja odczytuje jedną liczbę





ZAPIS:

Do zapisania czegoś do pliku służy funkcja fwrite.

fwrite(&z_czego,co,ile,do_czego);

z_czego – adres do zmiennej którą chcemy zapisać

co – rozmiar tego co chcemy zapisać

ile – ilość elementów do zapisuje

do_czego – wskaźnik naszego pliku

np.:

fwrite(&x,sizeof(int),1,plik);

OBSŁUGA PLIKÓW TEKSTOWYCH

ODCZTY:

Do odczytów plików tekstowych służy funkcja fscanf.

fscanf(wskaźnik_pliku, „% literka”, &zmienna);

Możemy zaobserwować że jest to podobna funkcja do scanf. Różnicą jest tylko liczba argumentów.

Pierwszym argumentem jest wskaźnik naszego pliku, z którego chcemy odczytać naszą daną.

ZAPIS:

Do zapisu plików tekstowych służy funkcja fprintf.

fprintf(wskaźnik_pliku, „jakiś tekst lub zmienna”, (ewentualnie zmienna ));

np.:

fprintf(plik, „TEKST i ZMIENNA (int) %d ”, x);

Funkcja jest bardzo podobna do printf.
Pierwszym argumentem jest wskaźnik naszego pliku.


Język C daje nam jeszcze taką fajną, przydaną rzecz do obsługi plików, jaką jest możliwość podawania pliku jako argument naszego programu. To znaczy, że użytkownik może podać ścieżkę do pliku, który chce obsłużyć.

Gdy chcemy sprawić możliwość podawania argumentów do naszego programu musimy delikatnie zmienić naszą funkcją główną main. A dokładnie dopisać do niej argumenty w taki sposób:

int main(int argc, char *argv[])

Pierwszy argument (int argc) przechowuje liczbę podanych argumentów, czyli jak damy jedne argument do naszego programu to argc będzie wynosiło 1.

Drugi z argumentów jest tablicą wskazań na nasze ścieżki. W elemencie o indeksie 0 zawsze przechowywana jest ścieżka do programu przez nas napisanego. Natomiast w elementach o kolejnych indeksach jest przechowywana ścieżka do kolejnych podanych plików.

Aby otworzyć taki plik możemy postąpić tak:
np.:
plik=fopen(argv[1], „wb”);


Oczywiście to nie wszystko na temat obsługi plików w języku C, ale te podstawowe funkcje wystarczą do zrozumienia idei. Ja będę zadowolony jak będziesz miał jakiekolwiek pojęcie na temat obsługi plików. Natomiast jeśli to będzie mało, zawsze można zajrzeć do internetu i dowiedzieć się więcej, bo jednak obsługa plików rzadko będziemy używać.

Brak komentarzy:

Prześlij komentarz