A programoknak általában adatstruktúrára van szükségük a végrehajtás során szükséges adatok tárolására. Általában ezeket az adatokat változókban vagy tömbökben tárolják. Ezzel az a probléma, hogy elvész, amint a program befejezi a végrehajtást. Ez azért van, mert ezek ideiglenes memóriahelyek.
Ha szüksége van arra, hogy az adatok egy program futtatása után is elérhetők legyenek, akkor azokat fájlba kell mentenie. A fájlok lehetnek szövegesek vagy binárisak.
Ez a cikk arra összpontosít, hogyan kezelheti a szöveges fájlokat C nyelven. Íme, amit tudnia kell.
Fájl megnyitása
Először is fontos tudni, hogy mindig deklarálnia kell egy FILE típusú mutatót, amikor fájlokkal dolgozik. Ez a mutató szükséges a fájl és a program közötti kommunikációhoz.
FILE *filePtr;
Egy fájl írásához, olvasásához vagy frissítéséhez először meg kell nyitnia azt. A C a szabványos fopen() könyvtárfüggvényt biztosítja ehhez.
Kapcsolódó: Hogyan ellenőrizhető, hogy két mátrix azonos-e a programozással
Ez a függvény két karakterlánc argumentumot vesz fel: a fájlnevet és a módot. Ha a megnyitott fájl nem abban a programkönyvtárban található, amelyben éppen tartózkodik, akkor a fájlnév használata helyett megadhatja a fájl elérési útját.
Nézze meg az alábbi szintaxist az fopen() használatához :
filePtr = fopen("filename.txt", "mode");
A filePtr változó egy FILE típusú mutató . Az argumentum mód a fájl megnyitásának módjára vonatkozik. Vagyis milyen funkciókat várnak el a fájlon.
Három módban nyithat meg egy fájlt C nyelven. Ezek az r, w és a módok . Fájl olvasásához használja az r gombot . Fájlba íráshoz használja a w billentyűt . Ha egy fájl végéhez adatokat szeretne hozzáfűzni, használja a .
Ha például egy programozás.txt nevű fájl tartalmát szeretné elolvasni , akkor az alábbi utasítást használja:
filePtr = fopen("programming.txt" , "r");
Az r, w és a mellett más kiterjesztett módok is léteznek. Az alábbiakban bemutatjuk a szöveges fájlok módozatait:
r+ és w+ : Mindkét mód a fájl megnyitására szolgál olvasásra és írásra. A különbség az, hogy az r+ az fopen() függvényt NULL értékkel adja vissza, ha a fájl nem létezik, míg a w+ létrehozza a fájlt helyette. Egy másik megjegyzés, hogy a w+ felülír egy fájlt, ha létezik.
a+ : Ez a mód egy fájl megnyitására szolgál hozzáfűzés és olvasás céljából. Ha a fájl nem létezik, akkor létrejön.
Írás és olvasás
Használhatja az fprintf és fscanf függvényeket egy fájl írására és olvasására. Ez a két funkció működését tekintve összehasonlítható az alap I/O printf és scanf funkcióival.
#include int main(void){ // pointer declaration FILE *filePtr; filePtr = fopen("myfile.txt", "w"); //the message below will be written to myfile.txt fprintf(filePtr, "%s", "Files are permanent memory locations."); }
A fenti kód bemutatja, hogyan hozhat létre egy myfile.txt nevű fájlt , majd tárolhat benne üzenetet. Az újonnan létrehozott fájl tartalmának elolvasásához lásd az alábbi kódot.
#include #include int main(void){ char message[196]; FILE *filePtr; filePtr = fopen("myfile.txt", "r"); if (filePtr == NULL){ printf("Error opening the file"); //program exists if the pointer returns NULL exit(1); } fscanf(filePtr,"%s", &message); printf("The message is: %s", message); fclose(filePtr); }
Amikor lefordítja és futtatja a fenti kódot, a kimenet a Files lesz . Észre fogja venni, hogy ez nem a teljes üzenet, amelyet a myfile.txt fájlban tárolt . Azért ne aggódj. Ez nem hiba a kódban.
Kapcsolódó: Hogyan találhatja meg egy karakter ASCII-értékét?
Amikor a program szóközt talál, leállítja a fájl tartalmának olvasását. Ha az üzenet ehelyett a Files-are-permanent-memory-locations néven íródott volna , akkor az egész kimenet a képernyőn jelenne meg.
Mindkét megadott kódpéldában észre kellett volna vennie az fclose() utasítást. A fájlt (szöveges vagy bináris) használat után mindig be kell zárni.
Egy pillantás a C++ programozásra
Miután elérte ezt a fájlkezelési szintet C nyelven, valószínűleg átlagon felüli felhasználója a nyelvnek. Ez azt is jelenti, hogy hatékonyabb programozási módokat kell keresnie.
C++ a válasz. Ez a C objektum-orientált verziója. Mostanra már fel kell hajtania az ingujjait, hogy megtanulja ezt a felkapott nyelvet.