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).
pliku kursor ustawiany jest na początku naszego pliku).
w
– zapisywanie 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ść).
bardzo ważne jest, aby pamiętać o tym, że jeśli podamy ścieżkę
do istniejącego pliku to utracimy jego zawartość).
a
– aktualizowanie 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).
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.
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.
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.
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