Ebben az útmutatóban megtudhatjuk, hogyan lehet bemeneti / kimeneti (I / O) műveleteket végrehajtani egy fájlon a C programozási nyelv használatával.
C fájl I / O – Tartalomjegyzék
1. Fájl megnyitása
2. Fájl olvasása
3. Fájl írása
4. Fájl bezárása
5. Húrok olvasása és írása fájlba
6. Bináris fájlok olvasása és írása C-ben
Mielőtt minden műveletet részletesen átbeszélnénk, készítsen egy egyszerű C programot:
Egy egyszerű C program a fájl megnyitására, olvasására és bezárására
A fenti programban newfile.txt
fájlt nyitunk meg r
módban, beolvassuk a fájl tartalmát és megjelenítjük a konzolon. lehetővé teszi az egyes műveletek részletes megértését:
Fájl megnyitása
fopen()
függvény egy fájl megnyitására szolgál.
Szintaxis:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
bármi lehet választás.
file_name
a megnyitni kívánt fájl neve. Itt adja meg a teljes elérési utat, például: “C: \\ myfiles \\ newfile.txt”.
A fájl megnyitása során meg kell adnia az üzemmódot. A fájl olvasására használt mód “r” ”, Amely” csak olvasható mód “.
például:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Az első karakter címe a következőben van tárolva: pointer fp
.
Hogyan ellenőrizhető, hogy a fájl sikeresen megnyílt-e?
Ha a fájl nem nyílik meg sikeresen, akkor a mutatóhoz NULL értéket rendelünk, így így írhatja a logikát :
Ez a kód ellenőrzi, hogy a fájl sikeresen megnyílt-e. Ha a fájl nem nyílik meg, akkor hibaüzenetet jelenít meg a felhasználó számára.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Különböző fájlmegnyitási módok:
A fájl megnyitása a fopen()
függvény használatával történik, míg megnyitáskor a következő módok bármelyikét használhatja a követelményeknek megfelelően.
“r” mód: Ez csak olvasható mód, ami azt jelenti, hogy ha a fájlt r módban nyitják meg, akkor nem teszi lehetővé a tartalom írását és módosítását. Amikor a fopen()
sikeresen megnyit egy fájlt, akkor a fájl első karakterének címét adja vissza, különben NULL értéket ad vissza.
“w” mód: Ez egy írás csak mód. A fopen()
függvény új fájlt hoz létre, ha a megadott fájl nem létezik, és ha nem sikerül megnyitni a fájlt, akkor NULL értéket ad vissza.
Mode ” a ”: Ennek a módnak a használatával a tartalom egy meglévő fájl végén csatolható. A “w” módhoz hasonlóan a fopen()
új fájlt hoz létre, ha nem létezik fájl. A sikertelen megnyitáskor a NULL értéket adja vissza.
A fájlmutató a fájl utolsó karakterére mutat: .
“r +” mód: Ez az üzemmód megegyezik az “r” móddal; azonban különféle műveleteket hajthat végre az ebben a módban megnyitott fájlon. Engedélyezheti a fájl tartalmának olvasását, írását és módosítását r + módban megnyílt.
A File Pointer a fájl első karakterére mutat.
“w +” mód: Ugyanaz, mint a “w” mód, kivéve az elvégezhető műveleteket; a fájl ebben a módban olvasható, írható és módosítható.
“a +” mód: Ugyanaz, mint az “a” mód; olvashatja és csatolhatja a fájl adatait, azonban a tartalom módosítása ebben a módban nem megengedett.
Fájl olvasása
A fájl elolvasásához először meg kell nyitnunk bármelyik fájlt a módból, például ha csak a fájlt akarja elolvasni, akkor nyissa meg “r” módban. A fájlnyitás során kiválasztott mód alapján engedélyezhetjük bizonyos műveletek végrehajtását a fájlon.
C Program fájl olvasására
fgetc (): Ez a függvény beolvassa a karaktert az aktuális mutató helyzetéből, és a sikeres olvasás után a mutatót a fájl következő karakterére mozgatja. Amint a mutatók a fájl végére érnek , ez a függvény visszaadja az EOF-ot (a fájl vége). A programunkban az EOF-et használtuk a fájl végének meghatározásához.
Írás fájlba
A fájl megírásához meg kell nyitnia a fájlt az írást támogató módban. Például, ha egy fájlt “r” módban nyit meg, akkor nem tudja írni a fájlt úgy, hogy az “r” írásvédett mód csak olvasást tesz lehetővé.
Példa: C Program írni a fájl
Ez a program arra kéri a felhasználót, hogy írjon be egy karaktert, és ezt a karaktert a fájl végére írja. Ha a fájl nem létezik, akkor ez a program létrehoz egy fájlt a megadott névvel, és beírja a bemeneti karaktert a fájlba.
Fájl bezárása
fclose(fp);
Az fclose () függvény a megnyitott fájl bezárására szolgál. Argumentumként meg kell adnia egy mutatót a bezárni kívánt fájlhoz.
Példa a Megnyitás, az olvasás, az írás és a bezárás műveletek megjelenítésére C-ben
Hogyan kell olvasni / írni (I / O) Karakterláncok a fájlokban – fgets & bemenetek
Itt megvitatjuk, hogyan olvassuk és írjuk a karakterláncokat egy fájlba.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Karaktertömb a karakterláncok tárolására.
rec_len: A bemeneti rekord hossza.
fpr: Mutató a bemeneti fájlhoz.
Vegyünk egy példát:
Példa a karakterláncok kiolvasására egy fájlból a C programozásban
A fenti példában a fgets függvényt használtuk így:
fgets(str, 10, fpr)
Itt az str azt a karakterláncot jelöli (char tömb), amelyben tárolja a karakterláncot, miután elolvasta a fájlból.
10 a karakterlánc hossza olvassa el minden alkalommal.
Az fpr mutató fájlra, amelyet el kell olvasni.
Miért használtam az if (fgets (str, 10, fpr) == NULL logikát a vég meghatározásához a fájl?
A fenti példákban a ch == EOF-et használtuk a fájl végének megismeréséhez. Itt ezt a logikát használtuk, mert a fgets NULL értéket ad vissza, amikor már nincsenek elérhető rekordok .
C program – Karaktersorozat írása fájlba
int fputs ( const char * s, FILE * fpw );
char *s
– karakter.
FILE *fpw
– Mutató (FILE típusú) a fájlba, amelyet írni fogunk.
Az input két argumentumot tartalmaz –
fputs(str, fpw)
str – str a tömböt jelöli, amelyben a karakterlánc van tárolva.
fpw – FILE mutató a kimeneti fájlra, amelybe a rekordot be kell írni.
Megjegyzendő pont a bemenetekkel kapcsolatban: A
bemenetek alapértelmezés szerint nem adnak hozzá új sort az egyes rekordok írása után, hogy ezt manuálisan megtehessék – minden egyes írás után a fájlba a következő utasítás állhat be.
fputs("\n", fpw);
C FÁJL I / O bináris fájlokhoz
Eddig megtanultuk a szöveges fájlok fájlműveleteit, mi van akkor, ha a fájlok binárisak (például .exe fájl). A fenti programok nem fognak működni bináris fájlok esetén, azonban a bináris fájlok kezelésében van egy kisebb változás. A fő különbség a fájlnév & mód. Megértjük ezt egy példa segítségével. Mondjuk, hogy két bináris fájlom van: bin1.exe & bin2.exe – A bin1.exe tartalmát át szeretném másolni a bin2.exe fájlba:
Példa: Olvasás és bináris fájlok írása C
Megjegyzés: A fájlnyitási módok “rb” és “wb” az “r” & “w” helyett.