FILE *fd ; fd = fopen("datoteka", "r");Najprej smo morali definirati kazalec fd, ki ga bomo kasneje uporabljali pri vseh operacijah z odprto datoteko. Temu kazalcu pravimo "opisnik datoteke" (file descriptor).
Drugi parameter v klicu funkcije fopen je v danem primeru "r", zato bo datoteka odprta za branje.
"r" | Odpri datoteko za branje |
"w" | Odpri datoteko za pisanje. Če je še ni, jo tvori, če je že, jo povozi |
"a" | Odpri datoteko za pisanje. Če je se ni, jo tvori, sicer dodajaj na konec. |
"r+" | Datoteka bo odprta za branje in pisanje |
"w+" | Datoteka bo odprta za branje in pisanje |
"a+" | Datoteka bo odprta za branje in pisanje |
fclose(fd);
FILE *fp1, *fp2; /* kazalca na datoteki */ char *s /* kazalec na niz */ int c; int size, n;
c = getc (fp1); | /* To je makro */ |
c = fgetc(fp1); | /* To je funkcija */
Branje znaka iz datoteke (podobno getchar()) |
ungetc(c,fp1) | Vrne znak na standardni vhod |
fgets (s,n,fp1); | Branje (največ n) znakov iz datoteke v niz s |
fscanf (fp1, format, &arg1, &arg2,..); | Formatirano branje, podobno kot scanf() |
fread (s, size, n, fp1); | Neformatirano (binarno) branje n elementov,velikosti size, pomnjenih
v polju s.
Funkcija vrne število prebranih elementov. |
putc (ch, fp2) | Zapis znaka v datoteko |
fputs (s,fp2); | zapis niza v datoteko |
fprintf (fp2,format, arg1, arg2,..); | Formatiran zapis v datoteko |
fwrite ( s, size, n, fp2); | Neformatirani (binarni) zapis n elementov velikosti size. s kaže
na polje elementov.
Funkcija vrne število zapisanih elementov. |
#include < stdio.h > /* Kopiranje datoteke */ main() { FILE *fp1, *fp2; int ch; if ((fp1= fopen("inpFile", "r")) ==NULL) { fprintf(stderr,"Datoteke ne morem odpreti"); exit (1); } fp2 = fopen ("outFile", "w"); while ( (ch = getc(fp1)) != EOF) putc(ch, fp2); fclose( fp1); fclose (fp2); exit (0); }
FILE *fp; long odmik; /* v datoteki */ int odkod ; /* od kod se steje odmik */
rewind (fp); | Postavi odmik na začetek datoteke |
fseek (fp, odmik, odkod); | Drugi parameter -odmik -pove, od kod dalje bo sledili branje ali
zapis v datoteko.
Tretji parameter ima lahko eno od vrednosti: |
odmik = ftell (fp); | Dobimo trenutni položaj (odmik) v datoteki |
ferror (fp) | Vrne TRUE , če je indikator napake za dani (datotečni) tok (stream) setiran (zaradi neuspele predhodne vh/izh operacije) |
feof (fp) | Vrne TRUE, če želimo brati po koncu datoteke |
clearerr (fp) | Resetira indikatorja vh/izh napake in konca datoteke |
fflush (fp) | Sistem zapisuje podatke v datoteko preko medpomnilnika. Ta funkcija forsira prepis podatkov iz medpomnilnika v datoteko. |
char buffer [BUFSIZ] setbuf (fp, bufer) |
Sami zagotovimo polje za medpomnilnik.BUFSIZ je definiran v stdio.h . Če namesto naslova polja buffer navedemo (char *) NULL, bo do operacije brez medpomnilnika (unbuffered) |