C fájlok I / O: Fájl létrehozása, megnyitása, olvasása, írása és bezárása

Tartalomjegyzék:

Anonim

C Fájlkezelés

A fájl nagy mennyiségű tartós adat tárolására használható. Sok más nyelvhez hasonlóan a C is a következő fájlkezelő funkciókat biztosítja,

  1. Fájl létrehozása
  2. Fájl megnyitása
  3. Fájl olvasása
  4. Írás fájlba
  5. Fájl bezárása

Az alábbiakban bemutatjuk a „C” -ban elérhető legfontosabb fájlkezelő funkciókat

funkció célja
fopen () Fájl létrehozása vagy meglévő fájl megnyitása
fclose () Fájl bezárása
fprintf () Adatblokk írása fájlba
fscanf () Blokkadatok olvasása fájlból
getc () Egyetlen karaktert olvas fel egy fájlból
putc () Egyetlen karaktert ír egy fájlba
getw () Fájlból egész számot olvas
putw () Egész szám írása egy fájlba
fseek () A fájlmutató pozícióját egy meghatározott helyre állítja be
ftell () Visszaadja a fájlmutató aktuális helyzetét
visszatekerés () Beállítja a fájlmutatót a fájl elejére

Ebben az oktatóanyagban megtanulja-

  • Fájl létrehozása
  • Fájl bezárása:
  • Írás fájlba
    • fputc () Funkció:
    • bemenetek () Funkció:
    • fprintf () Funkció:
  • Adatok olvasása egy fájlból
  • Interaktív fájl olvasás és írás a getc és a putc segítségével

Fájl létrehozása

Amikor egy fájllal szeretne dolgozni, az első lépés egy fájl létrehozása. A fájl nem más, mint egy hely a memóriában, ahol adatokat tárolnak.

Fájl létrehozásához a „C” programban a szintaxist követve,

FILE *fp;fp = fopen ("file_name", "mode");

A fenti szintaxisban a fájl egy adatstruktúra, amelyet a standard könyvtár határoz meg.

A fopen egy szabványos függvény, amelyet egy fájl megnyitására használnak.

  • Ha a fájl nincs a rendszeren, akkor létrejön, majd megnyílik.
  • Ha egy fájl már megtalálható a rendszeren, akkor közvetlenül ennek a funkciónak a segítségével nyílik meg.

Az fp egy fájlmutató, amely a típusú fájlra mutat.

Amikor megnyit egy fájlt, vagy létrehoz egy fájlt, meg kell határoznia, hogy mit fog kezdeni a fájllal. A „C” programozású fájl létrehozható vagy megnyitható olvasási / írási célokra. A mód segítségével meghatározható, hogy az alábbiakban megadott célokból meg akarja-e nyitni a fájlt. Az alábbiakban bemutatjuk a „C” programozás különféle módjait, amelyek egy fájl használatakor használhatók.

Fájl mód Leírás
r Nyisson meg egy fájlt olvasásra. Ha egy fájl olvasási módban van, akkor az adatok nem kerülnek törlésre, ha egy fájl már van a rendszeren.
w Nyisson meg egy fájlt írásra. Ha egy fájl írásmódban van, akkor új fájl jön létre, ha egy fájl egyáltalán nem létezik. Ha egy fájl már megtalálható a rendszeren, akkor a fájlon belüli összes adat megcsonkul, és írás céljából megnyílik.
a Nyissa meg a fájlt függelék módban. Ha egy fájl függelék módban van, akkor a fájl megnyílik. A fájl tartalma nem változik.
r + nyitva áll olvasásra és írásra a kezdetektől fogva
w + nyitott olvasásra és írásra, egy fájl felülírására
a + nyitva olvasásra és írásra, fájlhoz csatolva

Az adott szintaxisban a fájlnév és az üzemmód karakterláncként van megadva, ezért mindig dupla idézőjelek közé kell tenni őket.

Példa:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Kimenet:

A fájl ugyanabban a mappában jön létre, ahová elmentette a kódot.

Megadhatja a fájl létrehozásának elérési útját

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Fájl bezárása

Mindig be kell zárni egy fájlt, ha a fájlon végzett műveletek véget érnek. Ez azt jelenti, hogy a fájl tartalma és linkjei megszűnnek. Ez megakadályozza a fájl véletlen károsodását.

A „C” az fclose funkciót biztosítja a fájl bezárási művelet végrehajtásához. Az fclose szintaxisa a következő,

fclose (file_pointer);

Példa:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Az fclose függvény argumentumként egy fájlmutatót vesz fel. A fájlmutatóhoz társított fájlt ezután az fclose függvény segítségével bezárják. 0-t ad vissza, ha a bezárás sikeres volt, és EOF-t (a fájl vége), ha hiba történt a fájl bezárása közben.

A fájl bezárása után ugyanaz a fájlmutató más fájlokkal is használható.

A „C” programozásnál a fájlok automatikusan bezáródnak, amikor a program befejeződik. A fájl manuális bezárása az fclose függvény megírásával jó programozási gyakorlat.

Írás fájlba

A C fájlban, amikor fájlba ír, kifejezetten hozzá kell adni a (z) '\ n' újsoros karaktereket.

Az stdio könyvtár a fájlba történő íráshoz szükséges funkciókat kínálja:

  • fputc (char, file_pointer) : Karaktert ír a fájlba, amelyre a file_pointer mutat.
  • fputs (str, file_pointer) : Karaktersorozatot ír a file_pointer által mutatott fájlba.
  • fprintf (file_pointer, str, variable_lists) : Karaktersorozatot nyomtat a file_pointer által mutatott fájlhoz. A karakterlánc opcionálisan tartalmazhat formátummeghatározókat és a változó_listák változók listáját.

Az alábbi program bemutatja, hogyan kell fájlba írni:

fputc () Funkció:

#include int main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}

Kimenet:

A fenti program egyetlen karaktert ír be az fputc_test.txt fájlba, amíg el nem éri a következő "\ n" sor szimbólumot, ami azt jelzi, hogy a mondatot sikeresen megírták. A folyamat az, hogy vegyük a tömb minden karakterét és beírjuk a fájlba.

  1. A fenti programban létrehoztunk és megnyitottunk egy fputc_test.txt nevű fájlt írási módban, és deklaráltuk a fájlba beírandó karakterláncunkat.
  2. Karakterenként írási műveletet hajtunk végre a ciklus segítségével, és minden karaktert a fájlunkba tesszük, amíg a "\ n" karakter meg nem jelenik, majd a fájlt bezárjuk az fclose függvény segítségével.

bemenetek () Funkció:

#include int main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}

KIMENET:

  1. A fenti programban létrehoztuk és megnyitottuk az fputs_test.txt nevű fájlt írási módban.
  2. Miután három különböző karakterláncot írva írási műveletet hajtottunk végre az fputs () függvény segítségével
  3. Ezután a fájl bezáródik az fclose függvény segítségével.

fprintf () Funkció:

#include int main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}

KIMENET:

  1. A fenti programban létrehoztuk és megnyitottuk az fprintf_test.txt nevű fájlt írási módban.
  2. Miután egy írás műveletet végrehajtott az fprintf () függvény segítségével egy karakterlánc megírásával, akkor a fájlt az fclose függvény segítségével lezárjuk.

Adatok olvasása egy fájlból

Három különböző funkció van az adatok fájlból történő olvasására

  • fgetc (file_pointer): A következő karaktert adja vissza a fájlból, amelyre a fájl mutatója mutat. Amikor elérte a fájl végét, az EOF-t visszaküldi.
  • fgets (puffer, n, file_pointer): n-1 karaktert olvas ki a fájlból, és a karaktersorozatot egy pufferben tárolja, amelyben a NULL '\ 0' karaktert utolsó karakterként csatolják.
  • fscanf (file_pointer, conversion_specifiers, variable_adresses) : Az adatok elemzésére és elemzésére szolgál. Karaktereket olvas ki a fájlból, és a bemenetet a változó címek változó mutatók listájához rendeli át konverziós specifikátorok segítségével. Ne feledje, hogy mint a scanf esetében, az fscanf is abbahagyja a karakterlánc olvasását, ha szóköz vagy újsor kerül.

A következő program bemutatja az fputs_test.txt fájlból való olvasást a fgets (), az fscanf () és az fgetc () függvényekkel:

#include int main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}

Eredmény:

----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99

  1. A fenti programban megnyitottuk az "fprintf_test.txt" nevű fájlt, amelyet korábban az fprintf () függvény segítségével írtunk, és amely tartalmazza a "Learning C with Guru99" karakterláncot. A fgets () függvény segítségével olvastuk el, amely soronként olvassa el, ahol a puffer méretének elegendőnek kell lennie az egész sor kezeléséhez.
  2. Újra megnyitjuk a fájlt, hogy a mutatófájl visszaálljon a fájl elejére. Hozzon létre különféle karakterlánc-változókat az egyes szavak külön kezeléséhez. A változók kinyomtatásával megtekintheti azok tartalmát. Az fscanf () főleg az adatok kinyerésére és elemzésére szolgál egy fájlból.
  3. Nyissa meg újra a fájlt, hogy a mutatófájl visszaálljon a fájl elejére. Olvassa el az adatokat, és nyomtassa ki fájlból karakterenként, a getc () függvény segítségével, amíg az EOF utasítás meg nem jelenik
  4. Miután egy olvasási műveletet végrehajtott különböző változatokkal, az fclose függvény segítségével ismét bezártuk a fájlt.

Interaktív fájl olvasás és írás a getc és a putc segítségével

Ezek a legegyszerűbb fájlműveletek. A Getc a get karaktert, a putc pedig a put karaktert jelenti. Ez a két funkció egyszerre csak egyetlen karakter kezelésére szolgál.

A következő program bemutatja a fájlkezelési funkciókat a „C” programozásban:

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}

Kimenet:

  1. A fenti programban létrehoztunk és megnyitottunk egy demo nevű fájlt írási módban.
  2. Az írási művelet végrehajtása után a fájl bezáródik az fclose függvény segítségével.
  3. Újra megnyitottunk egy fájlt, amely most adatokat tartalmaz olvasási módban. Egy darab ciklus végrehajtódik, amíg az eof nem található. Miután megtalálta a fájl végét, a művelet befejeződik, és az adatok a printf funkcióval jelennek meg.
  4. Az olvasási művelet végrehajtása után a fájl az fclose függvény segítségével ismét bezárásra kerül.

Összegzés

  • A fájl egy hely a memóriában, ahol adatokat tárolnak.
  • A „C” programozás különféle funkciókat biztosít egy fájl kezeléséhez.
  • A fájlokkal való manipuláció mechanizmusát fájlkezelésnek nevezzük.
  • A műveletek végrehajtása előtt meg kell nyitni egy fájlt.
  • A fájl olvasási, írási vagy csatolási módban nyitható meg.
  • A Getc és a Putc függvények egyetlen karakter olvasására és írására szolgálnak.
  • Az fscanf () függvény lehetővé teszi adatok olvasását és elemzését egy fájlból
  • Egy teljes fájlt elolvashatunk ( a getc függvény használatával) az összes fájl lefedésével hurokolással, amíg az EOF-be nem kerül
  • Írhatunk egy fájlba, miután létrehoztuk a nevét, az fprintf () függvény használatával, és a karakterlánc végén a newline karakterrel kell rendelkeznie.