operacje na plikach


Ćwiczenie 6
Operacje na plikach
6.1. Wstęp
Każdy program pobiera dane ze strumienia wejściowego (np. klawiatura, plik na dysku)
i przekazuje wyniki do strumienia wyjściowego (monitor, plik na dysku). Strumienie te mogą mieć
postać tekstową lub binarną (ciąg bajtów). W chwili uruchomienia programu istnieją trzy
strumienie tekstowe:
- stdin - wejściowy skojarzony z klawiaturą
- stdout - wyjściowy, skojarzony z monitorem
- stderr  diagnostyczny, skojarzony z monitorem.
Jeśli potrzeba zdefiniować strumień kierujący dane z/do pliku zewnętrznego trzeba zdefiniować
wskaznik typu FILE* np. FILE *plik. Jest on kojarzony z plikiem dyskowym za pomocą funkcji
fopen, która ma postać:
plik= fopen(const char* nazwa, const char tryb),
gdzie nazwa oznacza pełną ścieżkę dostępu do pliku dyskowego umieszczoną w cudzysłowie, a
zmienna tryb może przyjmować wartości:
 r  otwarcie pliku tekstowego do odczytu
 w  utworzenie lub otwarcie pliku tekstowego do zapisu (usunięcie poprzednich
danych)
 a  utworzenie lub otwarcie pliku tekstowego do dopisania na końcu
 r+  otwarcie pliku tekstowego do czytania i pisania
 w+  utworzenie pliku tekstowego do wprowadzania zmian (usunięcie poprzednich
danych)
Jeśli otwierany plik ma być plikiem binarnym, to wewnątrz cudzysłowu należy dodatkowo
umieścić znak b.
Po zakończeniu operacji na pliku należy koniecznie wywołać funkcję fclose(plik) zamykającą plik.
Do odczytu i zapisu danych do pliku służą m. in. funkcje fputc, fgetc, fputs, fgets, fprintf, fscanf,
fwrite, fread.
Aktualną pozycję kursora wewnątrz pliku zwraca funkcja ftell(plik) - jest to odległość od początku
pliku wyrażona w bajtach.
Do przesuwania kursora wewnątrz pliku służy funkcja fseek(plik, k, z), która ustawia kursor w
pliku plik w odległości k bajtów od początku pliku (gdy z=0), od końca pliku (gdy z=2) lub od
aktualnej pozycji kursora (gdy z=1).
Do rozpoznawania końca pliku służy funkcja feof(plik) , która zwraca wartość niezerową, gdy
kursor osiągnął koniec pliku i zero w przypadku przeciwnym.
Plik można usunąć z dysku korzystając z funkcji remove(plik) lub zmienić mu nazwę funkcją
rename (plik, nowanazwa);
6.2. Pliki tekstowe
Program 6.1
#include
#include
#include
void main()
{
char *t={"Szanowny"}, bufor[50];
FILE *plik;
clrscr ();
plik=fopen("d:\\borlandc\\zad\\proba1.pro","w");
if(plik==NULL)
{
printf("Blad zapisu");
exit(1);
}
fputs (t,plik); //wpisanie ciągu znaków wskazanego przez wskaznik t
fputs("Pan",plik);
fputc('\n',plik);
fputs("Kowalski",plik);
// fseek(plik,5,0); fputc('K',plik);
fclose(plik);
plik=fopen("d:\\borlandc\\zad\\proba1.pro","r");
if(plik==NULL) printf("Brak pliku do odczytu");
while(!feof(plik)) //fgets wprowadza do bufora tekst o długości sizeof(bufor)-1
{ //pobrany z pliku
fgets(bufor,sizeof(bufor),plik);
puts(bufor);
}
fclose(plik);
getch();
}
Programy do samodzielnego napisania:
1. Utworzyć plik
a) tekstowy
b) binarny
zawierający n liczb generowanych losowo. Na ekranie wyświetlić największą z liczb zawartych
w pliku.
2. Zdefiniować strukturę opisującą produkt: nazwę, ciężar, cenę. Zapisać do pliku dane n
produktów. Znalezć produkt
- najtańszy
- najcięższy
Wypisać wszystkie produkty których nazwa zaczyna się na literę K.
Policzyć produkty droższe od zadanej ceny.
Politechnika Opolska 2


Wyszukiwarka

Podobne podstrony:
34 Pliki Operacje na plikach w Pascalu
operacje na plikach tekstowych
operacje na plikach
Asembler Operacje na Plikach
Operacje na plikach multimedialnych
Lab Operacje na plikach
Lab Operacje na plikach
operacje na plikach tekstowych zadania
Operacje na plikach
wycena operacji na rachunku
operacje na ramkach danych solucja
Operacje na histogramie
670 Przekwalifikowanie leasingu operacyjnego na finansowy
Kurs CorelDRAW 12 Część 4 Zaawansowane operacje na obiektach
operacje na rekordach zadania
Matlab operacje na macierzach, skrypty
operacje na rekordach
4 Operacje na tablicach (prezentacja)

więcej podobnych podstron