online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

 

Online dokumentumok - kep
  

Fajlkezelés a C programnyelvben: A szabvanyos fajlkezelés alapjai. A magas szintű fajlkezelés.

számítógépes

Fájl küldése e-mail



egyéb tételek

 
Halózat hardver eszközei
A rendszer karbantartasa
A UNIX és a LINUX operaciós rendszer
Szamítógép generaciók
A MagicDVDRipper kezelése
A C program szerkezete, típusai, konstansok
A CRT unit fontosabb beépített konstansai, eljarasai, függvényei, hasznalata
Összetett adattípusok (adatabrazolas, értéktartomany, konstansok, mûveletek, fontosabb függvények, eljarasok)
Adatbazis-típusok
Képekkel kapcsolatos szóhasznalat
 
 

Fájlkezelés a C programnyelvben: A szabványos fájlkezelés alapjai. A magas szintű fájlkezelés.


A C- ben egy file-t egy olyan pointerrel tudunk azonosítani ami egy FILE típusú struktúrára mutat. A FILE egy struktúra típusnév definíció, mely struktúra tartalmazza az aktuális file-lal kap­csolatos informá­ció­kat (pld. azt, hogy a file írás vagy olvasás alatt áll). Az <stdio.h>-ban talál­ható az _iobuf struktúra deklarálása, és utána a "typedef struct   _iobuf FILE ;" típusnév definí­ció.

Szabványos be és kimenet átirányítása

Alapesetben egy C program a klaviatúrát használja bemenetként, és a képernyôt hasz­nálja kimenetként. Abban az esetben, ha a programot a következôképpen indítjuk :
rendez < adatok.txt
akkor a rendez nevű program nem a klaviatúráról, hanem az adatok.txt állo­mány­ból ol­vas­sa az adatokat. Abban az esetben, ha az alábbi módon indí 242j97c tjuk :
rendez > r_adatok.txt



akkor nem a képernyôre írja ki a rendezett adatokat, hanem az r_adatok.txt állo­mány­ba.

File deklaráció

A file deklarációja az úgynevezett állománymutató segítségével történik, ami a már említett FILE típusú struktúrára mutat :

FILE < állománymutató >;
Példa file definícióra : FILE *fp;
Ezekután az fp pointerrel hivatkozhatunk a file-ra, a használat során.

File megnyitása

A file megnyitása az fopen() függvénnyel történik, ami egy FILE * típusú poin­tert ad vissza. Az fopen() függvénynek két char * típusú bemenô paramétere van. Az elsô a megnyitandó állomány neve, a második a megnyitás módja :


<állománymutató> = fopen( <filenév> , <mód >);

Alapesetben háromféle megnyitási módról beszélhetünk :
1. Megnyitás olvasásra : "r" File pointer az állomány elejére áll.
2. Megnyitás írásra : "w" File pointer az állomány elejére áll.
3. Megnyitás hozzáfűzésre : "a" File pointer az állomány végére áll.

Az "r" mód alkalmazása esetén a file-nak természetesen léteznie kell ! A "w" mód alapesetben egy új file-t kreál írásra. Ha a "w" módot egy már meglévô file esetén al­kal­mazzuk, akkor számolnunk kell az­zal, hogy a file tartalma felülíródik ! A hozzáfűzésre való megnyitás ( "a" ) esetén a file írható, - a file végétôl. Ebben az esetben a meglévô file tartalma nem íródik felül ! Ha a file nem léte­zik, akkor a "w" módhoz hasonlóan egy új file jön létre - írásra.

Az alapesetet a + (plusz) karakterrel tudjuk módosítani, ha a feladat úgy kívánja !A + karaktert az aktuális mód karakteréhez egyszerűen hozzá kell fűzni, így az alap megnyitási módok a következôképp módosulnak :Az "r+" mód csakis egy létezô file-ra vonatkozik. A file-t olvasásra és írásra nyitja meg ( update ). A "w+" mód egy üres file-t nyit meg irásra és olvasásra. A file-nak tehát nem kell léteznie ! Létezô file esetén a file tartalma felülíródik ! Az "a+" mód olvasásra és hozzáfűzésre nyitja meg a file-t. Ha a file még nem létezik, akkor új file-t nyit meg. Minden írási művelet a file végén történik, így egy meglévô file tartalma nem íródik felül !

Ha ASCII állományról van szó akkor a "t", ha bináris állományról akkor a "b" üzemmódot használ­juk, az ennek megfelelô karaktert hozzá kell fűzni az elôbb ismertetett karakterek valamelyikéhez. Az alapértelmezés a text üzemmód !

Példa file megnyitásra :
fp = fopen("adatok.txt","rt"); // Az adatok.txt file megnyitása olvasásra, text üzemmódban.

A gyakorlatban természetesen a file megnyitással együtt hiba vizsgálatot is vég­zünk, hiszen az fopen() függvény NULL pointert ad vissza, ha a megnyitás vala­milyen oknál fogva nem sikerült ! (Például nem létezô file-t akartunk megnyitni)

File írása

Ha "w" módban nyitottunk meg egy file-t, akkor az írás mindig a file elejétôl történik, így a file-ban lévô adatok felülíródnak !

Egy karakter kiírása : int fputc( int c, FILE *f )
ahol :
c : a kiirandó karakter,
f : a file struktúrára mutató pointer

Az fputc() normál esetben a kiírt karaktert adja vissza, hiba esetén pedig
az EOF-ot.

Formátumozott változólista kiírása : int fprintf( FILE *f ,char *fs , <args> )
ahol :
f : a file struktúrára mutató pointer
fs : a formátum vezérlô string
<args> : változó(lista)
Az fprintf() a kiírt karakterek számát adja vissza. Látható, hogy az fprintf() használata teljesen megegyezik a printf() függvényével, a FILE típusú pointertôl eltekintve.

File olvasása

Egy karakter beolvasása : int fgetc( FILE *f )
ahol :
f : a file struktúrára mutató pointer

Az fgetc() normál esetben a beolvasott karaktert adja vissza, hiba esetén pedig az EOF-ot. A file pointert automatikusan a következô beolvasandó karakterre állítja.

Formátumozott változólista beolvasása :   int fscanf( FILE *f , char fs,<args>)
ahol :
f: a file struktúrára mutató pointer
fs : a formátum vezérlô string
<args> : változócím(lista)
Az fscanf() a beolvasott karakterek számát adja vissza. Látható, hogy az fscanf() használata teljesen megegyezik a scanf() függvényével, a FILE típusú pointertôl eltekintve.

File lezárása

int fclose(f) ; ahol f egy FILE típusú pointer.
Az fclose() függvény 0-át ad vissza akkor, ha a file lezárása sikeresen megtörtént. Ellenkezô esetben EOF-ot ad vissza a függvény.

/* Adatok irása il. olvasása file használattal */



/* fprintf(), fscanf() */
#include <stdio.h>
#define SIZE 5
struct szemely
;

void main()

psz = &szm[0] ;

// A struktúra feltöltése adatokkal
sz_load( psz );

// File megnyitás írásra
if( (fp=fopen("szemely.dat","wt")) == NULL )

// Kiiratás file - ba
for(i=0; i<SIZE; i++)

// Az írásra megnyitott file lezárása
fclose(fp);


// File megnyitás olvasásra
if( (fp=fopen("szemely.dat","rt")) == NULL )

// Beolvasás file - ból

for(i=0; i<SIZE; i++)

// Az olvasásra megnyitott file lezárása

fclose(fp);
}

void sz_load( struct szemely *p_sz )

}

File elejére történô pozicionálás

void rewind( FILE *f );
ahol :
f : A file struktúrára mutató pointer.

A függvény hatására a file pointer a file elejére fog mutatni, és bármilyen író,
vagy olva­só mű­ve­let a file elejétôl lesz érvényes. Csak "a+" olvasás+hozzáfűzés
üzemmódban ha­tásos !

Adategység formátum nélküli kiiratása file-ba
int fwrite( char *buffer, int size, int count, FILE *f );

ahol :

buffer : Az a memóriacím, ahol a kiiratni kívánt adategység kezdôdik.
size : Az adategység mérete byte-okban kifejezve.
count : A kiiratni kívánt adategységek száma.
f : A file struktúrára mutató pointer.

Ez a függvény kiválóan alkalmas tömbök, struktúrák, ill. struktúra tömbök
kiiratására. Utóbbira lásd: 40. sz. példaprogram.

Adategység formátum nélküli beolvasása file-ból

int fread( char *buffer, int size, int count, FILE *f );


ahol :

buffer : Az a memóriacím, ahova az adategységet be akarjuk olvasni.
size : Az adategység mérete byte-okban kifejezve.
count : A beolvasni kívánt adategységek száma.
f : A file struktúrára mutató pointer.
Ez a függvény kiválóan alkalmas tömbök, struktúrák, ill. struktúra tömbök beolvasására.

File vége ( End Of File ) vizsgálat

int feof( FILE *f );

ahol :
f : A file struktúrára mutató pointer.
A függvény 0 értéket ad vissza, ha nem a file végén vagyunk, ill. nem 0 értéket, ha a file végén vagyunk.


Találat: 1525