Leírja, hogy a C programozó hogyan hoz létre, nyit meg és zár be egy szöveges vagy bináris fájlt.
A fájl bájtok sorozatát jelenti, legyen szó akár szöveges fájlról, akár bináris fájlról, C Language nem csak a legfelső szintű funkciókhoz való hozzáférést biztosítja, hanem az alapul szolgáló (OS) hívást is biztosítja a tárolóeszközön lévő fájlok feldolgozásához. . Ez a fejezet elmagyarázza a dokumentumkezelés fontos követelményeit.
megnyitott fájl
Általában az fopen () függvényt használva új fájl létrehozásához vagy meglévő fájl megnyitásához, ez a hívás inicializál egy FILE típusú objektumot, amely az áramlás vezérléséhez szükséges összes információt tartalmazza. Íme a függvényhívás prototípusa:
FILE *fopen ( const char * fájlnév , const char * mód );
Itt a fájlnév egy fájl elnevezésére szolgáló karakterlánc, a hozzáférési mód értéke a következő értékek egyike lehet:
minta | leírás |
r | Nyisson meg egy meglévő szövegfájlt, amely lehetővé teszi az olvasását. |
w | Nyisson meg egy szöveges fájlt, amely lehetővé teszi a fájlba való írást. Ha a fájl nem létezik, akkor új fájl jön létre. Itt a program a fájl elejétől írja a tartalmat. Ha a fájl létezik, akkor a rendszer nullára csonkolja, és újraírja. |
a | Nyisson meg egy szöveges fájlt, és hozzáfűzés módban írjon a fájlba. Ha a fájl nem létezik, akkor új fájl jön létre. Itt a program tartalmat fűz hozzá a már meglévő fájlokhoz. |
r+ | Nyisson meg egy szöveges fájlt, amely lehetővé teszi a fájl olvasását és írását. |
w+ | Nyisson meg egy szöveges fájlt, amely lehetővé teszi a fájl olvasását és írását. Ha a fájl már létezik, akkor a fájl nulla hosszúságúra csonkolódik, és ha a fájl nem létezik, akkor új fájl jön létre. |
a+ | Nyisson meg egy szöveges fájlt, amely lehetővé teszi a fájl olvasását és írását. Ha a fájl nem létezik, akkor új fájl jön létre. Az olvasás a fájl elején kezdődik, és az írás csak hozzáfűzés módban történik. |
Feldolgozott bináris fájl esetén használja a következő hozzáférési módot a fentiek cseréjéhez:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
zárt fájl
A fájl bezárásához használja az fclose() függvényt. A funkció prototípusa a következő:
int fclose ( FILE *fp );
- Ha a fájlt sikeresen lezártuk, az fclose() függvény nullát ad vissza, és ha a hiba az EOF-t adja vissza. Ez a funkció valójában eltávolítja az adatokat a pufferből, bezárja a fájlt, és felszabadítja a fájlhoz használt összes memóriát. Az EOF az stdio.h fejlécfájlban meghatározott állandó
A C szabványos könyvtár különféle funkciókat biztosít a fájlok karakterenkénti vagy rögzített hosszúságú karakterlánckénti olvasásához és írásához.
Írjon a fájlba
Íme a legegyszerűbb függvények karakterek adatfolyamba írásához:
int fputc ( int c , FÁJL *fp );
Az fputc () függvény beírja a c paraméter karakterértékét abba a kimeneti adatfolyamba, amelyre az fp mutat. Ha az írás sikeres, akkor hiba esetén visszaadja az írott karaktert és az EOF-t. A következő függvény segítségével nullára végződő karakterláncot írhat az adatfolyamba:
int fputok ( const char *s , FILE *fp );
Az fputs () függvény beírja az s karakterláncot a kimeneti adatfolyamba, ahová az fp mutat. Ha az írás sikeres, akkor nem negatív értéket ad vissza, és hiba esetén az EOF-t. Használhatja azt is, hogy az int fprintf (FILE * fp, const char * formátum,...) egy karakterláncot ír a fájlba. Próbáld ki a következő példát:
Megjegyzés: Győződjön meg arról, hogy rendelkezésre áll egy tmp-könyvtár, és ha nem létezik, először létre kell hoznia azt a számítógépén.
A / tmp általában egy ideiglenes könyvtár a Linux rendszeren. Ha Windows rendszeren fut, módosítania kell egy létező könyvtárra a helyi környezetben, például: C: \ tmp, D: \ tmp stb.
élő példa
#beleértve
A fenti kód lefordítása és végrehajtása után egy új test.txt fájlt hoz létre a / tmp könyvtárban. És két sorba ír két különböző függvény segítségével. Következőként ezt a fájlt olvassuk el.
Olvassa el a fájlt
A következő a legegyszerűbb funkció egyetlen karakter kiolvasására egy fájlból:
int fgetc ( FÁJL * fp );
Az fgetc () függvény beolvas egy karaktert a bemeneti fájlból, amelyre az fp mutat. A visszatérési érték a beolvasott karakter és az EOF hiba esetén. A következő funkció lehetővé teszi egy karakterlánc kiolvasását egy adatfolyamból:
char *fgets ( char *buf , int n , FÁJL *fp );
Az fgets () függvény n-1 karaktert olvas be az fp által irányított bemeneti adatfolyamból. Másolja az olvasási karakterláncot a puffer pufferbe, és egy null karaktert fűz a végéhez, hogy befejezze a karakterláncot.
Ha ez a függvény az utolsó karakter beolvasása előtt szaggatott sorkarakterrel vagy a fájl végének EOF-jával találkozik, akkor csak az olvasott karakterekhez tér vissza, beleértve a sortöréseket is. Használhatja az int fscanf (FILE * fp, const char * formátum,...) függvényt is a karakterlánc kiolvasására a fájlból, de az első szóköz és sortörés esetén leállítja az olvasást.
élő példa
#beleértve
Amikor a fenti kódot lefordítják és végrehajtják, beolvassa az előző részben létrehozott fájlokat, és a következő eredményeket adja:
1: Ez 2: az fprintf-et teszteli...
3: Ez az fputok tesztelése...
Először is, az fscanf() metódusa csak ezt olvassa, mert hátul szóközt talál. Másodszor, hívja meg a functon fgets () függvényt, hogy a maradék részt a sor végéig olvassa el. Végül hívja meg az fgets () parancsot a második sor teljes olvasásához.
Bináris I/O függvény
A következő két függvény használható a bináris bemenethez és kimenethez:
size_t fread (void *ptr , size_t size_of_elements , size_t number of_eles , FILE *a_file ); size_t fwrite (const void *ptr , mérete_t elemek mérete , mérete_t elemek száma , FÁJL *a_file );
Mindkét függvény olvasási és írási tárolóblokkokhoz – általában tömbökhöz vagy struktúrákhoz – tartozik.
A fenti mintegy C fájl olvasása és írása a HDV Phoelectron Technology Ltd. szoftvertechnikai üzemeltetője. És a hálózattal kapcsolatos berendezéseket (például: ACONU/ kommunikációONU/ intelligensONU/ rostONU, stb.) egy erős szoftvercsapatot hozott össze, minden ügyfél számára testreszabhatja az exkluzív igényeket, akiknek szüksége van rá, és termékeinket intelligensebbé és fejlettebbé teheti.