Programski jezik C
Datoteke
Otvaranje datoteke
Zatvaranje datoteke
Rad sa datotekom
getc i putc
fprintf i fscanf
fgets i fputs
feof i ferror
Sistemski pozivi
Rad sa blokovima memorije
44.00K
Категория: МенеджментМенеджмент

1_Datoteke (2)

1. Programski jezik C

Datoteke

2. Datoteke

• Osnovni način rada sa datotekama je
preko FILE strukture:
– datoteka se otvara, dobija se pokazivač na
FILE strukturu
– sve funkcije za rad sa datotekama primaju
kao parametar i pokazivač na FILE strukturu
– datoteka se zatvara, sa jedinim parametrom –
pokazivačem na FILE strukturu.
• Sve funkcije se nalaze u stdio.h biblioteci.

3. Otvaranje datoteke

• Funkcija za otvaranje datoteke je:
FILE *fopen(char *ime_datoteke, char *mod)
• Drugi parametar označava mod otvaranja datoteke:
– “r” – read, odn. samo čitanje
– “w” – write, odn. samo pisanje
– “a” – append, odn. dodavanje na kraj
– na nekim sistemima se dodaje i “b” na kraj moda da se naglasi
binarno otvaranje datoteka
• Funkcija fopen vraća NULL ako ne može da otvori
zadatu datoteku
• Primer:
FILE *f;
f = fopen(“pera.dat”, “r”);

4. Zatvaranje datoteke

• Datoteka se zatvara funkcijom
fclose(FILE *f).

5. Rad sa datotekom

• Funkcije za rad sa datotekom su:
– getc(FILE *f) i putc(char c, FILE *f) –
učitavanje/pisanje jednog karaktera u datoteku
– fprintf(FILE *f, ...) i fscanf(FILE *f, ...) – isto kao i
printf/scanf, samo sa datotekom
– fgets(char *s, int maxl, FILE *f) i fputs(char *, FILE *f)
– učitavanje/snimanje jednog stringa iz datoteke
– feof(FILE *f) – vraća 1 ako smo stigli do kraja
datoteke u toku čitanja
– ferror(FILE *f) – vraća 1 ako je bilo greške tokom rada
sa datotekom

6. getc i putc

• getc(FILE *f) i putc(char c, FILE *f) –
učitavanje/pisanje jednog karaktera u
datoteku.
• Ako se kao rezultat učitavanja getc
funkcijom dobije konstanta EOF, onda smo
došli do kraja datoteke.
getcputc.c

7. fprintf i fscanf

• fprintf(FILE *f, ...) i fscanf(FILE *f, ...) – isto
kao i printf/scanf, samo sa datotekom.
• Prvi parametar je pokazivač na FILE
strukturu, a ostali su kao kod standardnih
printf i scanf funkcija.
prtscf.c

8. fgets i fputs

• fgets(char *s, int maxl, FILE *f) i fputs(char
*, FILE *f) – učitavanje/snimanje stringa iz
datoteke.
• Funkcija fgets:
– čita ili do zadate dužine ili do kraja reda
– vraća NULL ako dođe do kraja datoteke
– učitani string sadrži i znak za novi red!
• Funkcija fputs snima string, bez znaka za
novi red!
fgetfput.c

9. feof i ferror

• feof(FILE *f) – vraća 1 ako smo stigli do kraja
datoteke u toku čitanja.
• Funkcija feof će vratiti 1 na kraju datoteke tek
nakon što kraj datoteke bude detektovan pri
pokušaju čitanja iz datoteke nekom
standardnom funkcijom!
• ferror(FILE *f) – vraća 1 ako je bilo greške tokom
rada sa datotekom.
• Funkcija clearerr(FILE *f) briše status greške.
feoferr.c

10. Sistemski pozivi

• Rad sa datotekama je moguć i upotrebom
OS-specifičnih funkcija
– logična posledica ovakvog pristupa: gubitak
portabilnosti.

11. Rad sa blokovima memorije

• Funkcije fread i fwrite čitaju/pišu blokove
memorije.
• Funkcija fread:
fread(void *ptr, size_t size, size_t n, FILE
*stream);
• Funkcija fwrite:
fwrite(const void *ptr, size_t size, size_t n,
FILE*stream)
freadwr.c
English     Русский Правила