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 |
Klasični
(ne ANSI) C je za tretji parameter uporabljal vrednosti 0, 1 in 2.
| 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) |