Delo z datotekami
Iz E-študij, proste zakladnice študentskega znanja
Vsebina |
Deklaracija
Za uporabo teh funkcij bomo potrebovali knjižnjico stdio.h:
#include <stdio.h>
V C-ju lahko do datotek dostopami z uporabo novega tipa, ki je definiran znotraj stdio.h knjiznice, imenujemo pa ga kazalec na datoteko (file pointer). Kazalec na datoteko deklariramo takole:
FILE *neka_datoteka:
FOpen (odprtje datoteke)
Preden lahko karkoli delamo z datoteko, jo moramo najprej odpreti. To storimo z uporabo fopen funkcije, ki vrne ustrezen kazalec na datoteko. Ce datoteke ne more odpreti zaradi kakrsnegakoli razloga, vrne vrednost NULL.
if ((neka_datoteka = fopen("neka_datoteka", "w")) == NULL) //ce vrne NULL
fprintf(stderr, "Ne morem odpreti %s\n", "neka_datoteka"); //izpisemo napako
else
printf("Datoteko smo uspesno odprli"); //sicer javimo, da smo datoteko uspesno odprli
fopen sprejme dva argumenta, oba sta niza znakov. Prvi argument predstavlja ime datoteke, ki jo hocemo odpreti, drugi argument pa doloca, kako zelimo datoteko odpreti:
- "r" - odpremo datoteko za branje
- "w" - ustvarimo datoteko za pisanje
- "a" - odpremo datoteko za dodajanje vsebine na koncu
FPrintF (pisanje v datoteko)
Če želimo nekaj v datoteko napisati potem ko jo že imamo deklarirano in odprto, uporabimo ukaz fprintf():
koda_napake = fprintf(neka_datoteka, "oblika", ...);
Funkcija fprintf() se obnaša točno tako kot funkcija printf(), le da besedila ne piše na ekran temveč v datoteko.
FScanF (branje iz datoteke)
Če želimo iz deklarirane in odprte datoteke še kaj prebrati, uporabimo ukaz fscanf():
koda_napake = fscanf(neka_datoteka, "oblika", ... );
Funkcija fscanf() se obnaša točno tako kot funkcija scanf(), le da podatkov ne bere iz tipkovnice ali drugega standardnega vhoda (pipice) temveč iz datoteke ki smo jo nakazali.
FClose (zaprtje datoteke)
Vsako datoteko ki smo jo odprli z ukazom fopen() moramo tudi zapreti z ukazom fclose().
Funkcija fclose() deluje podobno kot funkcija fopen() le da ji za parameter podamo pointer naše datoteke:
if (fclose(neka_datoteka) == NULL) //ce vrne NULL
fprintf(stderr, "Ne morem zapreti %s\n", "neka_datoteka"); //izpisemo napako
else
printf("Datoteko smo uspesno zaprli");