Fájlkezelés

Az stdio.h standard könyvtár tartalmaz olyan függvényeket, amelyek operációs rendszertől függetlenül alkalmasak fájlkezelésre.

Ahhoz, hogy hozzáférhessümk egy fájlhoz, a programnak használnia kell egy mutatót, amellyel erre a fájlra hivatkozunk. Ezt a mutatót a FILE kulcsszóval vezetjük be:

FILE = *fajlnev;

A fájlt az fopen függvénnyel nyirjuk meg:

fajlnev = fopen("eleresiUtvonal\\azenfajlom.kit", "mod");

Itt mod a következő karaktereket helyettesítheti:

r (read) : egy létező fájlt nyitunk meg olvasásra,

w (write): új fájlt hozunk létre és megnyitjuk írásra,  ha a fájl már létezik, akkor a tartalma elvész,

a (append): egy létező fájlt nyitunk meg írásra. Ha a fájl nem létezik, akkor létrehozza.

Ha a fájlal nem kívánunk tovább dolgozni, akkor az fclose függvénnyel zárjuk be.

fclose(fajlnev);

Lássunk ez után egy egyszerű példát: létrehozunk egy hello.txt nevű fájlt és ebbe beírjuk a "Helló világ!" szöveget.

#include <stdio.h>
int main(){
    FILE *f;
    f = fopen("hello.txt", "w");
    fprintf(f, "Helló világ!");
    fclose(f);
    return 0;
}

Észrevesszük, hogy az ismert printf függvény helyett az fprintf függvényt használtuk, ezzel írunk fájlba. Az fprintf függvénynek 2 vagy 3 argumentuma van, az első argumentum azt mutatja meg, hogy hová írjon, az utána következő  egy sztring, amit a mi esetünkben kiírt, vagy pedig a printf-nél megszokott módon ez a sztring adhatja a formátumot és akkor még meg kell adni, hogy milyen változót írjon ki.

Előfordulhat, hogy nem sikerül megnyitni ill. létrehozni a fájlt, vagy pedig olyan fájlt akarunk megnyitni, amelyik nem létezik. Ekkor az fopen visszatérési értéke NULL. Ezt illik lekezelni, ezért módosítjuk az előző programunkat:

#include <stdio.h>
int main(){
    FILE *f;
    if ((f = fopen("hello.txt", "w")) == NULL){
     fprintf(stderr, "Nem tudom létrehozni a fajlt.\n");
     return 1;
     }
     else{
          fprintf(f, "Helló világ!");
     }
    fclose(f);
    return 0;
}