12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

13.3. FUNKCIJE ZA ČITANJE I PISANJE 225funkcije ftell mora dati dobar drugi argument za funkciju fseek. U slučajugreške, ftell će vratiti vrijednost -1L.Funkcija fseek uzima pokazivač na otvorenu datoteku, te dva parametrakoji specificiraju položaj u datoteci. Trceći parametar pos indicira odkog mjesta se mjeri offset (odmak). U datoteci stdio.h su definirane trisimboličke konstante: SEEK SET, SEEK CUR i SEEK END, koje imaju sljedećeznačenje:posSEEK SETSEEK CURSEEK ENDNova pozicija u datotecioffset znakova od početka datotekeoffset znakova od trenutne pozicije u datotecioffset znakova od kraja datotekeNa primjer,Pozivfseek(fp, 0L, SEEK SET)fseek(fp, 0L, SEEK END)fseek(fp, 0L, SEEK CUR)fseek(fp, ftell pos, SEEK SET)ZnačenjeIdi na početak datotekeIdi na kraj datotekeOstani na tekućoj pozicijiIdi na poziciju je dao prethodnipoziv ftell() funkcijeStandard postavlja neka ograničenja na funkciju fseek. Tako za binarnedatoteke SEEK END nije dobro definiran, dok za tekstualne datoreke jedino supozivi iz prethodne tabele dobro definirani.Napišimo sada funkciju koja će u datoteci potražiti odredeni account ipovećati njegovo polje total za 100, ako je ono manje od 5000.void Povecaj(const char *file, int n){FILE *fp;struct account tmp;longpos;intsize=sizeof(struct account);if((fp=fopen(file,"r+b"))==NULL){fprintf(stderr,"Povecaj, error: nije moguce otvoriti"" datoteku %s.\n",file);exit(-1);}pos = n*size;fseek(fp, pos, SEEK_SET);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!