Inf 2 10, informatyka
[ Pobierz całość w formacie PDF ]
UNIWERSYTET TECHNOLOGICZNO-PRZYRODNICZY
w Bydgoszczy
ZAKŁAD ELEKTROENERGETYKI
LABORATORIUM INFORMATYKI
INSTRUKCJA DO ĘWICZENIA X
Pliki tekstowe i binarne
Opracował:
dr inŇ. Marcin Drechny
Luty 2010 r.
2
1.
Celem ęwiczenia jest:
Celem tego ęwiczenia jest poznanie i utrwalenie podstawowych operacji zwiĢzanych
z trwałym zapisywaniem i odczytywaniem danych programowych znajdujĢcych siħ
w plikach tekstowych i binarnych przy podejĻciu tradycyjnym i obiektowym.
2.
Wprowadzenie
JednĢ z podstawowych i najwaŇniejszych umiejħtnoĻci programistycznych jest
zarzĢdzanie zasobami plikowymi. Pliki sĢ podstawowymi zdefiniowanymi „kontenerami”
danych, trwale zapisanymi w zasobach dyskowych komputera.
Pliki moŇemy podzielię nastħpujĢco:
a)
pod wzglħdem funkcjonalnym na
-
pliki tekstowe (zawierajĢce podstawowe znaki ASCII np. znaki alfabetu),
-
pliki binarne (zawierajĢce bajty o kodzie od 0 do 255) np. pliki wykonywalne
z rozszerzeniem *.exe, *.com.
b)
pod wzglħdem struktury wewnħtrznej na
-
pliki sekwencyjne,
-
pliki o dostħpie swobodnym ( pliki baz danych ).
Podstawowymi operacjami niezbħdnymi do obsługi plików sĢ:
-
operacja otwarcia pliku,
-
operacja zapisu do pliku,
-
operacja odczytu z pliku,
-
operacja zamkniħcia pliku,
-
operacje dyskowego zarzĢdzania plikiem (kopiowanie, usuwanie
przemieszczanie pliku, oraz tworzenie nowego pliku).
KolejnoĻę operacji wykonywanych na pliku przedstawia rysunek 1.
ZnajomoĻę powyŇszych zagadnieı umoŇliwia realizowanie podstawowego celu
w programowaniu, a mianowicie – przetwarzanie informacji lub danych.
3
Otwarcie pliku
Operacje odczytu
z pliku
Dane wejĻciowe
DYSK
PRZETWARZANIE INFORMACJI
Fizyczna lokalizacja
pliku
Operacje zapisu
do pliku
Dane wyjĻciowe
Zamkniħcie pliku
Rys. 1 Miejsce pliku w systemie przetwarzania informacji
Wszystkie funkcje pozwalajĢce na wykonanie operacji na plikach znajdujĢ siħ w
standardowej wewnħtrznej bibliotece C/C++. Ich prototypy okreĻlone sa w zbiorze
nagłówkowym
stdio.h
Podstawowymi operacjami niezbħdnymi do obsługi plików sĢ:
• operacja otwarcia pliku,
• operacja zapisu do pliku,
• operacja odczytu z pliku,
• operacja zamkniħcia pliku,
• operacje dyskowego zarzĢdzania plikiem (kopiowanie, usuwanie przemieszczanie pliku,
oraz tworzenie nowego pliku).
2.1 Otwarcie pliku
FILE
*
fopen
(
const char
*patch,
const char *
mode);
Funkcja
fopen
otwiera plik o nazwie i ĻcieŇce dostħpu okreĻlonej parametrem path i wiĢŇe z
tym plikiem strumieı,. Parametr mode słuŇy do okreĻlenia sposobu, celu otwarcia oraz trybu
pracy strumienia. Ogólny format tego parametru przedstawia siħ nastħpujĢco:
sposób-i-cel-otwarcia[tryb]
Gdzie sposób i cel otwarcia podane sĢ w poniŇszej tabeli natomiast tryb pracy okreĻlany jest
literkĢ:
4
‘b’ dla pliku binarnego,
‘t’ dla pliku tekstowego
brak trybu oznacza plik tekstowy
wt
otwarcie pliku do zapisu
wt+
otwarcie pliku do zapisu i odczytu
rt
otwarcie pliku do odczytu
rt+
otwarcie pliku do odczytu i zapisu
wt+ róŇni siħ od rt+ tym, Ňe w pierwszym przypadku mamy moŇliwoĻę zapisu, jak i zarówno odczytu, ale
zostanie utworzony nowy plik, natomiast w drugim wypadku plik nie zostanie utworzony, tylko zostanie otwarty
do odczytu i zapisu juŇ istniejĢcy plik. JeŇeli chcemy otworzyę juŇ istniejĢcy plik (chociaŇ taki naprawdħ nie
znajduje siħ na dysku) zmienna plik przyjmie wartoĻę NULL. MoŇemy wiħc w ten sposób sprawdzię, czy udało
siħ otworzyę plik, czy teŇ nie:
Przykład 1:
plik=fopen("plik.txt","rt");
if
( plik==NULL ) printf("Nie moŇna otworzyc pliku!");
Listing 1: otwarcie pliku
Przykład 2:
FILE *plik;
char
bufor[50];
5
plik=fopen("plik.txt","rt");
if
( plik==NULL ) { printf("Nie moge otworzyc pliku!");
return
0;}
fgets(bufor, 50, plik);
printf("%s",bufor);
fclose(plik);
2.2 Zapis do pliku
Po otwarciu pliku
moŇemy dokonywaę zapisu nastħpujĢcymi funkcjami:
fwrite
( const void
*co
,int
rozmiar
, int
n
, FILE
*plik
)
Wskazana funkcja wysyła do pliku „n” elementów o rozmiarze „ rozmiar” bajtów
pobranych z pliku wskazanego parametrem „plik”. W przypadku powodzenia operacji
wartoĻciĢ funkcji staje siħ liczba wszystkich wysłanych elementów (nie bajtów), a w
przypadku błħdu wartoĻę zero.
int
fputc
( int c, FILE *plik)
Funkcja wysyła znak okreĻlony parametrem c do pliku wskazanego parametrem
plik
.
WartoĻciĢ funkcji jest wysłany znak, w przypadku błħdu zaĻ EOF.
int
fputs
(
const char
*s, FILE *plik)
Funkcja wysyła łaıcuch wskazany parametrem s do pliku wskazanego parametrem
plik
.
Funkcja nie dołĢcza znaku koıca wiersza (‘\n’), natomiast znak koıca łaıcucha (‘\0’) nie
zostaje wysłany. W przypadku powodzenia operacji wartoĻę funkcji jest nieujemna, w
przeciwnym razie EOF.
InnĢ funkcjĢ do zapisu w plikach tekstowych jest punkcja
fprintf
(FILE *plik,const char
*format, ...
)
Parametry formatowania takie same jak w printf()
Listing 2: Zapis struktury do pliku
[ Pobierz całość w formacie PDF ]