200 likes | 494 Views
Uvod u programiranje I. jesen/zima 2008. Ulaz/izlaz sa datotekama. Terminologija: datoteka = fajl Problem: jednokratni podaci koje program dobija sa tastature ili prikazuje na monitoru Rešenje: trajno čuvanje podataka u datotekama Datoteke se nalaze na disku, cd-romu, flešu, traci,.
E N D
Uvod u programiranje I jesen/zima 2008
Ulaz/izlaz sa datotekama • Terminologija: datoteka = fajl • Problem: jednokratni podaci koje program dobija sa tastature ili prikazuje na monitoru • Rešenje: trajno čuvanje podataka u datotekama • Datoteke se nalaze na disku, cd-romu, flešu, traci, ... Uvod u programiranje I
Ulaz/izlaz sa datotekama • Prednosti rada sa datotekama: • Ulazni podaci se mogu u datotekama nezavisno upisati • Olakšan rad sa velikim brojem podataka • Ulazni podaci u datotekama se mogu koristiti više puta od strane više programa • Izlazni podaci zapisani u datotekama se mogu prenositi, štampati, obrađivati drugim programima, ... Uvod u programiranje I
Ulaz/izlaz sa datotekama Magistrala Operativnamemorija d1 d2 … CPU Disk Monitor Tastatura d4 d3 Uvod u programiranje I
Ulaz/izlaz sa datotekama • Ulaz iz datoteke = čitanje datoteke • Izlaz u datoteku = pisanje datoteke • Svaka datoteka ima jedinstveno ime u sistemu datoteka na disku • mojprog.c • seminarski.doc • \\server\prodaja\cene.txt • c:\slike\mojeluce.gif Uvod u programiranje I
Ulaz/izlaz sa datotekama • Vrste datoteka prema načinu upisa podataka: • Tekstualne datoteke (“čitljive”) • Binarne datoteke (“karakuke”) Uvod u programiranje I
Ulaz/izlaz sa datotekama • Tekstualne datoteke • Niz znakova (može biti vrlo veliki) • Kada program upisuje numeričke podatke u izlaznu datoteku, automatski se vrši konverzija njihove memorijske binarne reprezentacije u niz znakova • Kada program čita numeričke podatke iz ulazne datoteke, automatski se vrši konverzija odgovarajućeg niza znakova u binarni oblik Uvod u programiranje I
Ulaz/izlaz sa datotekama • Binarne datoteke • Niz bajtova • Kada program upisuje ili čita numeričke podatke, ne vrši se nikakva konverzija njihovog binarnog oblika u niz znakova ili obrnuto • Brži rad jer nema konverzije, ali datoteke nečitljive standardnim programima Uvod u programiranje I
Ulaz/izlaz sa datotekama • Tipične operacije sa datotekom • Otvaranje datoteke (uspostavljanje veze programa i željene datoteke) • Čitanje/pisanje datoteke • Ispitivanje stanja datoteke (kraj datoteke, veličina datoteke, ... ) • Zatvaranje datoteke (raskidanje veze programa i željene datoteke) Uvod u programiranje I
Ulaz/izlaz sa datotekama • Da bi se koristila neka datoteka, ona se mora prvo otvoriti • Otvaranje datoteke je spora operacija, zato otvaranje treba izvršiti samo jednom • Broj istovremeno otvorenih datoteka u programu je ograničen, zato neku datoteku treba zatvoriti čim se završi rad sa njom Uvod u programiranje I
Ulaz/izlaz sa datotekama • Datoteka se može otvoriti • samo za čitanje • samo za pisanje • za dopisivanje na kraj datoteke • za čitanje i pisanje • U prva tri slučaja, čitanje/pisanje se obavlja sekvencijalno • U četvrtom slučaju, čitanje/pisanje se obavlja programski u proizvoljnim mestima Uvod u programiranje I
Ulaz/izlaz sa datotekama • Čitanje/pisanje(pristup) datoteke • Sekvencijalni pristup datoteci: nakon svakog čitanja ili pisanja, “prozor” datoteke se pomera na sledeću poziciju za čitanje ili pisanje • Proizvoljni pristup datoteci: “prozor” datoteke se pomera na proizvoljnu poziciju za čitanje ili pisanje Uvod u programiranje I
Ulaz/izlaz sa datotekama • Otvaranje tekstualne datoteke • r (read), samo za čitanje. Datoteka mora postojati • w (write), samo za pisanje. Ako datoteka postoji, briše se njen sadržaj • a (append), za dopisivanje na kraj datoteke. Ako datoteka ne postoji, formira se nova • r+, za čitanje i pisanje postojeće datoteke • w+, za čitanje i pisanje nove datoteka • a+, za čitanje i dopisivanje na kraj datoteke Uvod u programiranje I
Ulaz/izlaz sa datotekama • Rad sa tekstualnom datotekom • strukturaFILEsadrži relevantne informacije o datoteci • fopen • fclose • feof • fscanf • fprintf Uspostavlja režim rada sa datotekom Imaju dodatni, prvi argument koji je pokazivač na datoteku koja se čita ili piše Uvod u programiranje I
Ulaz/izlaz sa datotekama /* čita datoteku sa cenama i racuna njihov prosek */ #include <stdio.h> int main(void) { FILE*d; /* pokazivac datoteke */ char imedat[256]; /* ime datoteke */ int n=0; /* ukupan broj cena u datoteci */ double cena, suma=0.0; /* jedna cena i ukupna suma cena */ printf(”Unesite ime datoteke: ”); gets(imedat); d = fopen(imedat, ”r”); Uvod u programiranje I
Ulaz/izlaz sa datotekama if (d == NULL) { printf(”Greska kod otvaranja %s.\n”, imedat); return 1; } while (feof(d) == 0) { // while (!feof(d)) fscanf(d, ”%lf”, &cena); suma = suma + cena; n++; } printf(”Prosek procitanih %d cena je %f.\n”, n, suma/n); fclose(d); return 0; } Uvod u programiranje I
Ulaz/izlaz sa datotekama • Rad sa binarnom datotekom • strukturaFILE • rb, wb, ab, rb+, wb+, ab+ • fopen • fclose • feof • fread(bafer, veličina, broj, pd) • fwrite(bafer, veličina, broj, pd) Uvod u programiranje I
Ulaz/izlaz sa datotekama • Datoteka za čitanje i pisanje • fseek • ftell Uvod u programiranje I