You are on page 1of 35

Datoteke

Datoteke

vrste datoteka
binarne
sadraj ine podaci predstavljeni u binarnom obliku
proizvoljan tip sadraja

tekstualne
sadraj ine podaci koji odgovaraju karakterima nekog kodnog
sistema: ASCII, EBCDIC, UTF-8, UTF-16
plain-text
Datoteke

radnje nad datotekama


otvaranje i zatvaranje
pristup
itanje, pisanje, pozicioniranje

provera statusa
kreiranje i brisanje
C - datoteki tip podatka

tip podatka koji predstavlja datoteku u programu


oFILE*
pokaziva na tip FILE
FILE je u osnovi struktura
deklarisana u zaglavlju stdio.h
primer deklaracije pokazivaa datoteke:
FILE *f;
C - datoteki tip podatka
svaki ulaz i izlaz C programa se posmatra kao datoteka
tri ugraene datoteke
stdin - standardni ulaz
podrazumevano uitavanje vrednosti sa tastature

stdout - standardni izlaz


podrazumevano prikazivanje vrednosti na ekranu

stderr - standardni izlaz za poruke


poruke o grekama, prikazuje na ekranu

infrastruktura za rad sa datotekama


<stdio.h>
C - otvaranje datoteke
funkcija
FILE *fopen (const char *naziv, const char
*rezim);
naziv - naziv datoteke koja treba da bude otvorena
u skladu sa pravilima operativnog sistema
rezim - oznaka naina korienja datoteke
povratna vrednost
pokaziva na otvorenu datoteku ili
NULL vrednost ako otvaranje nije uspeno izvreno
obavljati proveru povratne vrednosti
C - otvaranje datoteke
mogui reimi rada - tekstualne datoteke
"r"
itanje postojee datoteke
"w"
pisanje u ve postojeoj datoteci
prethodni sadraj biva uniten
pisanje u novoj datoteci
automatski se kreira nova datoteka ako ne postoji neka sa datim
nazivom
"a"
append
dodavanja sadraja na kraj postojee datoteke
ako datoteka sa datim nazivom ne postoji, bie kreirana
C - otvaranje datoteke
mogui reimi rada - tekstualne datoteke
"r+" - itanje i pisanje u postojeoj datoteci
"w+" - itanje i pisanje
o u postojeoj datoteci
prethodni sadraj biva uniten
o u novoj datoteci
automatski se kreira nova datoteka ako ne postoji neka sa
datim nazivom

"a+"
o itanje i dodavanja sadraja na kraj postojee datoteke
o ako datoteka sa datim nazivom ne postoji, bie kreirana
primer:
FILE *f = fopen("sadrzaj.txt","r+");
C - otvaranje datoteke
mogui reimi rada - binarne datoteke
dodavanje slova b u opis reima
logika ostaje ista kao kod tekstualnih
datoteka
mogue kombinacije "rb", "wb", "ab"
"r+b", "w+b", "a+b" "rb+", "wb+", "ab+"
(identino kao prethodna tri)

primer: FILE *f = fopen("sadrzaj.bin","r+b");


C - zatvaranje datoteke
funkcija
int fclose(FILE *f); f - pokaziva na prethodno otvorenu
datoteku koja treba da bude zatvorena
povratna vrednost 0 ako je zatvaranje uspeno
konstanta EOF ako je dolo do greke
automatsko zatvaranje
pri zavretku izvravanja programa
kraj main funkcije
sve otvorene datoteke bivaju zatvorene

ne oslanjati se na to
eksplicitno zatvoriti svaku otvorenu datoteku
Poludinamike i dinamike
strukture podataka
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Napisati C program koji demonstrira realizaciju
osnovnih operacija sa dinamikom strukturom
podataka oblika jednostruko spregnute liste.
Element liste sastoji se od dva polja: podatak
koji predstavlja proizvoljan karakter i pokazivaa
na sledei element liste. Operacije koje treba
realizovati sa jednostrukom spregnutom listom
su: unos novog karaktera, listanje karaktera u
listi i brisanje karaktera iz liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Grafika predstava jednostruko spregnute liste u
ovom zadatku je:

NULL oznaava da pokaziva ne pokazije ni na ta.


Uopteno, pokazivaka promenljiva sadri adresu
elementa (sloga liste) na koji pokazuje.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Sa listom se mogu uraditi sledee operacije:
1. Inicijalizacija liste,
2. Unos novog elementa na poetak liste,
3. Listanje liste (prikaz svih elemenata iz liste),
4. Brisanje elemenata iz liste i
5. Brisanje liste (oslobaanje memorije).
Dinamika struktura podataka u
obliku jednostruko spregnute liste
U zadatku se koristi dinamika struktura
podataka u obliku jednostruko spregnute liste.
Da bismo mogli pristupiti elementima liste
potreban nam je pokaziva na prvi element liste,
koji se naziva glava liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
1. Inicijalizacija liste predstavlja postavljanje glave
liste na NULL, tako da kada glava liste ima
vrednost NULL znai da lista prazna.
2. Unos novog elementa u listu moe se obaviti
dodavanjem elementa na poetak liste ili
dodavanjem elemenata na kraj liste. U ovom
zadatku je realizovano dodavanje elemenata
na kraj liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Sa novi=(Tcvor*)malloc(sizeof(Tcvor)) formira se
slog koji je tipa TCvor (obezbeuje funkcija
malloc), i pokaziva novi pokazuje na
novoformirani slog.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Sada se polja sloga popunjavaju na osnovu
sledeih naredbi:
c=getche();
novi->znak=c;
novi->sledeci=NULL;
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Ako je lista prazna tada se novi element ubacuje
kao prvi element liste:
if(*glava==NULL)
{
*glava=novi;
return;
}
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Ako lista ve postoji preskoie se gornja if naredba
i unos e se obaviti sledeim delom koda:
tek=*glava;
pret=*glava;
while(tek!=NULL)
{
pret=tek;
tek=tek->sledeci;
}
pret->sledeci=novi;
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Nakon prolaska kroz while ciklus imaemo
sledeu situaciju: tek ne pokazuje ni na ta, a
pret koji ga je pratio pokazivae na poslednji
slog iz liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Nakon pret->sledeci=novi, novi slog e biti
povezan kao poslednji element u listi.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
3. Listanje liste predstavlja prikazivanje svih
elemenata iz liste. Ako je glava==NULL znai da
je lista prazna i nemamo ta prikazati.
Ako lista nije prazna, novim pokazivaem polazi
se od prvog sloga liste (tek=glava) i dok se ne
doe do kraja liste (tek==NULL) prikazuju se
slogovi liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
tek=*glava;
while(tek!=NULL)
{
printf(" %c",tek->znak); /* Sa strelicom (->) se
pristupa elementu sloga (strukture).*/
tek=tek->sledeci; /* Prelazimo na sledei
elemenat iz liste*/
}
Dinamika struktura podataka u
obliku jednostruko spregnute liste
4. Brisanje elemenata iz liste realizuje se tako to se mora
element prvo pronai (vri se traenje elementa u listi).
To se moe realizovati sledeim delom koda:
tek=*glava;
pret=*glava;
while(tek!=NULL&&(tek->znak!=c))
{
pret=tek;
tek=tek->sledeci;
}
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Ovde je c promenljiva koja se trai. Nakon
zavretka while ciklusa ako pokaziva tek ima
vrednost NULL znai da elementa nema u listi.
U sluaju da je tek!=NULL element se nalazi u
listi, a pokaziva pret pokazuje na njegovog
prethodnika iz liste. Ovde se mogu razlikovati
dva sluaja:
a) Da slog koji se brie nije prvi elemenat liste,
b) Da slog koji se brie jeste prvi elemenat liste.
Dinamika struktura podataka u
obliku jednostruko spregnute liste
a)
Dinamika struktura podataka u
obliku jednostruko spregnute liste
a) Naredbama
pret->sledeci=tek->sledeci;
tek->sledeci=NULL;
Dobijamo sledei izgled:

Sada preostaje i da ga fiziki izbriemo, a to se


radi naredbom free(tek).
Dinamika struktura podataka u
obliku jednostruko spregnute liste
b) Slog koji se brie je prvi element u listi. To se
vidi na slici:
Dinamika struktura podataka u
obliku jednostruko spregnute liste
Sledeim naredbama se brie:
*glava=tek->sledeci;
tek->sledeci=NULL;

Sada preostaje i da ga fiziki izbriemo, a to se


radi naredbom free(tek).
Dinamika struktura podataka u
obliku jednostruko spregnute liste
5. Brisanje liste ili oslobaanje memorije moe se
realizovati sledeim kodom:
while(*glava!=NULL)
{
tek=*glava;
*glava=tek->sledeci;
free(tek);
}
Dinamika struktura podataka u
obliku jednostruko spregnute liste

Tako redom dok se ne izbrie i poslednji slog iz


liste.
Poludinamika struktura podataka
u obliku steka
Napisati C program koji sa standradnog ulaza
ita niz znakova i ispisuje njihov sadraj.
Zadatak reiti korienjem steka kao
poludinamike strukture podataka .
Poludinamika struktura podataka
u obliku steka
Stek je poludinamika struktura. U zadatku se
koristi fizika realizacija steka, pri emu se mogu
realizovati samo dve operacije:
Stavljanje elemenata na stek (push) i
Brisanje elemenata sa steka (pop).
Poludinamika struktura podataka
u obliku steka
Element koji se poslednju upisuje na stek
stavlja se kao prvi element steka (vrh steka), a
ujedno se i prvi uzima sa steka. Elementi se
uzimaju u suprotnom redosledu u odnosu na
onaj kako su dodavani u stek. Ta osnova steka
je uslovila da se uz pomo steka realizuje
zadatak.

You might also like