1 / 13

3 . Memorijske klase i datoteke 3.1. Memorijske klase

3 . Memorijske klase i datoteke 3.1. Memorijske klase U C-u se mogu definisati razne vrste promenljivih, odrediti vreme njihovog trajanja, način korišćenja, ... Mogu se definisati 5 vrsta promenljivih u memoriji. (Postoji i 6. određena preko pokazivača.)

jui
Download Presentation

3 . Memorijske klase i datoteke 3.1. Memorijske klase

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3. Memorijske klase i datoteke 3.1. Memorijske klase U C-u se mogu definisati razne vrste promenljivih, odrediti vreme njihovog trajanja, način korišćenja, ... Mogu se definisati 5 vrsta promenljivih u memoriji. (Postoji i 6. određena preko pokazivača.) Za neki objekat-podatak može se odrediti trajanje, opseg korišćenja i povezivanje sa raznim delovima programa. Opseg određuje region(e) programa kojima može pristupiti jedan identifikator. Varijablja može biti deklarisana u bloku, prototipu funkcije, ali i u datoteci. U zavisnosti gde je deklarisana, određen je opseg njene važnosti.

  2. U sledećem primeru, reč je o datotečnoj promenljivoj – njen opseg je cela datoteka. #include <stdio.h> int datotecna = 0; /* promenljiva čiji opseg je datoteka */ void crta(void); int main(void) { ... } void crta(void) { ... } Ovakve promenljive često se nazivaju globalne.

  3. Sledeće svojstvo promenljivih je povezanost. Promenljiva može biti povezana ekterno, interno ili da nije uopšte povezana. Promenljive bloka ili prototipa funkcije nisu povezane (one predstavljaju privatnu vrstu promenljivih). Promenljiva koja ima spoljašnju povezanost može biti korišćena u raznim fajlovima jednog programa. promenljiva koja ima unutrašnju povezanost može se koristiti svid au jednom fajlu programa. Korišćenjem rezervisane reči static saopštavamo da promenljiva ima unutrašnju povezanost. U sledećem primeru: int ovdasnja = 5; static int glavna = 3; int main() { ... } ... Ovde glavna ima unutrašnju povezanost, a ovdasnja spoljsšnju.

  4. Trajanje promenljive u memoriji zavisi od toga kakve je vrste. Postoje statičko i automatsko trajanje. Sve promenljive (sa spoljašnjom ili unutrašnjom povezanošću) imaju statičko trajanje. To znači da ove promenljive postoje za sve vreme izvršavanja programa. Globalne varijable imaju statičko trajanje. Promenljive bloka imaju automatsko trajanje. To znači da s ememorija oslobađa pr izlasku iz bloka. Najveći broj promenljivih, koje smo do sada koristili, bile su automatske. Automatske promenljive s emogu deklarisati pomoću ključne reči auto: int main(void) { auto int pom; ..... } Registarske promenljive se deklarišu pomoću ključne rečiregister.

  5. Tablica memorijskih klasa Mem. klasa Trajanje Opseg Povezanost Kako je deklarisana automatska automatskobloknije u bloku register automatskobloknije u bloku sa ključnom register staticsa statičkofajlspolj. izvan svih f-ja spolj povez. staticsa statičkofajlunutr. izvan svih f-ja utsunutr. povez. sa klj.reč static staticbez statičkobloknije u bloku povezanosti sa klj. reč static

  6. 3.2. Datoteke Datoteka (file) jedan od najbitnijih pojmova u računarstvu. Datoteka – skup podataka povezanih na neki način. Datoteke se obično čuvaju na nekoj spoljašnjoj memoriji. U C-u datoteka se satoji od neprekidnog niza bajtova od kojih svaki može biti učitatan individualno. Razlikujemo 2 vrste fajlova (viđenja): tekstovne (tekstuakne) binarne. C program automatski otvara 3 standardne dtoteke: standradnu ulaznu (input) - obično tastatura (stdin) standardnu izlazni (output) - obično ekran (stdout) standardnu izlaznu za poruke o greškama (error output) - obično ekran (stderr).

  7. Standardne ulazne datoteke obezbeđuju ulazne podatke za program. Ovi podaci seobično učitavaju preko funkcija: • getchar(), gets() i scanf(). • U standardnu izlaznu datoteku se upisuju podaci, preko funkcija: • getchar(), gets() i scanf(). • U standardni izlaz za greške štampaju se poruke o greškama. • Redirekcijom možemo promeniti standardni ulaz, odnosno, izlaz. • Standardni ulaz i izlaz pružaju razne pogodnosti. Na primer, • ulaz i izlaz preko bafera, • standardne funkcija printf prevodi razne oblike podataka u string koji se lako štampa u standardnu izlaznu datoteku.

  8. 3.2.1. Otvaranje i zatvaranje datoteka Kada radaimo sa nestandardnim datotekama, svaka datoteka pre korišćenja mora biti otvorena (bilo da čitamo iz nje ili upisujemo u nju), a nakon korišćenja zatvorena. Za otvaranje i zatvaranje datoteka koriste se funkcije definisane u stdio.h. Funkcija za otvaranje poziva se na sledeći način: fpok= fopen(imedatoteke, mod) i ima sledeću deklaraciju FILE *fopen (char *imedatoteke, char *mod) Funkcija fopen vraća pokazivač (fpok)na fajl koji se može koristiti u drugim funkcijama. FILE je izvedeni tip definisan u stdio.h pomoću typedef-a.

  9. Funkcija fopen vraća NULL-pokazivač ako ne može da otvori datoteku. String mod određuje način upotrebe datoteke. Može imati sledeća značenja: mod značenje “r” otvara tekstovnu datoteku za čitanje “w” otvara tekstovnu datoteku za upis (briše postojeću) “a” otvara tekst-dat. za upis dodadjući sadržaj postojećoj. “r+” otvara tdat. za ažuriranje (čitanje, upis) “w+” otvara tdat. za užuriranje(čitanje, upis uz brisanje) “a+” otvara tdat. za ažurirane (čitanje, upis, samo dodavanje) Postoje i odgovarajući modovi za binarne datoteke. To su: “rb”, “wb”, “ab”, “rb+” (“r+b”), “wb+” (“w+b”), “ab+”, (“a+b”).

  10. Za zatvaranje datoteke koristio se funkcija: fclose(fpok). Kraj datoteke prepoznaje s epreko EOF. 3.2.2. Čitanje iz datoteke i upis u datoteku Za čitanje iz datoteke koristi se funkcija getc(fpok) koja je deklarisana u stdio.h na sledeći način: int getc(FILE *fpok) Za upis u datoteku koristi se funkcija put(ch, fpok) koja ima sledeću deklaraciju: int putc(char ch, FILE *fpok) Ovim funkcijama odgovaraju, redom, getchar() i putchar() za standardnu ulaznu i izlaznu datoteku.

  11. Datbrzn.cpp Datcita 3.2.3.Funkcije za rad sa stringovima. Stringovi se mogu učitavati ,odnosno, upisivati u datoteke. Za učitavanje strunga koriste se funkcije: fgets(string,maxduzina,fpok) koje imaju sledeće deklaracije: char *fgets(char *sttring, int maxduzina, FILE *fpok), Ona obavlja sledeće: učitava string do nove linije ili do maxduzine na kraj stringa dodaje ‘\0’ nastavlja sa čitanjem gde je stala vraća NULL kad naiđe na EOF.

  12. Funkcija za upis stringa u datoteku poziva se sa: fputs(strig, fpok) i ima sledeći deklaraciju: int fputs(char *string, FILE *fpok) Funkcija upisuje string u datoteku. U slučaju greške vraća EOF. Za formatirani ulaz-izlaz datoteka, mogu se koristiti funkcije: Int fscan(FILE *fpok, char *format, ...) i Int fprintf(FILE *fpok, char *format, ...). Datform,cpp Datulaz.cpp Datimenik.cpp

  13. Postoje i druge funkcije za rad sa datotekama. To su: rewind(), fseek(), ftell(), fflush() fgetpos(), fsetpos(), feof(), ferror() ungetc(), setvbuf(), fread(), fwrite() Ali se njima nećemo baviti.

More Related