Delo z datotekami

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

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");            
 

Povezave

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja