On-line učionica

5. decembar 2014.

Rad sa fajlovima

Filed under: C posle Pascal-a,Programiranje — jelena100janovic @ 12:01 pm

Tokovi su prenosnici za pisanje i čitanje podataka. Oni obezbeđuju efikasne i prilagodljive metode ulaza i izlaza.

Tok je fizički uređaj (npr. štampač ili monitor) ili fajl kojim se upravlja pomoću pokazivača na tok.

Postoji interna C-ova struktura podataka, FILE, koja predstavlja sve tokove i definisana je u stdio.h. Jednostavno treba da se obratimo strukturi FILE unutar programa kada vršimo ulaz ili izlaz pomoću tokova.

Treba samo da deklarišemo promenljivu ili pokazivač ovog tipa u našim programima.

Ne moramo da znamo ništa o detaljima njene definicije.

Moramo otvoriti tok pre nego što počnemo sa izlazom ili ulazom, onda moramo da mu pristupimo, i na kraju da ga zatvorimo.

Ulazno/izlazni tok je baferisan. To znači da se određeni segment podataka upisuje ili čita sa toka pomoću privremenog dela memorije (bafera). Ovo možemo ilustrovati:

Slika6

Primetite kako pokazivač u stvari pokazuje na početak bafera.

Ovo dovodi do efikasnog čitanja i pisanja, ali pazite! Podaci upisani u bafer se ne pojavljuju na uređaju (ili u fajlu) sve dok se bafer ne isprazni (engl. flush). To se postiže pomoću ‘\n’. Svaki nestandardni izlazak iz programa može napraviti probleme.

Predefinisani tokovi

Postoje 3 predefinisana toka u stdio.h: stdin, stdout i stderr. Sva tri koriste tekst kao način pisanja i čitanja.

stdin i stdout se mogu koristiti sa fajlovima, programima, ulaznim i izlaznim uređajima. stderr uvek izlazi na ekran.

Ekran je podrazumevan za stdout i stderr. Tastatura je podrazumevana za stdin.

Predefinisani tokovi se automatski otvaraju na početku programa i automatski zatvaraju na kraju.

Fajlovi

Fajlovi su najčešći oblik toka.

Prva stvar koju moramo uraditi je da otvorimo fajl. To radi funkcija fopen():

Kod53

Funkcija fopen vraća pokazivač na FILE. String name je ime fajla na disku kome želimo da pristupimo. String mode kontroliše vrstu pristupa. Ako je iz bilo kog razloga nemoguće pristupiti fajlu, vraća se NULL pokazivač.

Vrste pristupa mogu biti:

  • „r“ — read — za čitanje,
  • „w“ — write — za pisanje i
  • „a“ — append — za dopisivanje.

Da bismo otvorili fajl moramo imati tok (pokazivač na fajl) koji pokazuje na strukturu FILE.

Dakle, da bi otvorili falj koji se zove mojfajl.txt za čitanje uradili bismo sledeće:

Kod54

Dobra je praksa proveriti da li je fajl korektno otvoren:

Kod55

Čitanje i pisanje u fajl

Uobičajeno se koriste funkcije fprintf i fscanf za pristup fajlovima.

Kod56

One su slične printf i scanf sem što se podaci čitaju iz toka koji mora biti otvoren pomoću fopen().

Pokazivač toka se automatski povećava u svim piši/čitaj funkcijama. O tome ne moramo da brinemo.

Kod57

Druge funkcije za rad sa fajlovima:

Kod58

Ove funkcije rade slično kao getchar i putchar.

getc je definisana kao pretprocesorski makro u stdio.h, fgetc je bibliotečka funkcija. Obe daju isti rezultat!

Kod59

Možemo pristupiti predefinisanim tokovima pomoću fprintf itd.

Kod60

Ostavite komentar »

Nema komentara.

RSS feed for comments on this post. TrackBack URI

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s

Blog na WordPress.com.

%d bloggers like this: