online kép - Fájl  tube fájl feltöltés file feltöltés - adja hozzá a fájlokat online fedezze fel a legújabb online dokumentumok Kapcsolat
   
 

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
   
kategória
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
 
 
 













































 
 

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 Esszé Projekt


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: 1346