Popisuje, ako programátor C vytvára, otvára a zatvára textový súbor alebo binárny súbor.
Súbor znamená sériu bajtov, či už ide o textový súbor alebo binárny súbor, jazyk C, nielenže poskytuje prístup k funkciám najvyššej úrovne, ale poskytuje aj základné (OS) volanie na spracovanie súborov na úložnom zariadení. . Táto kapitola vysvetlí dôležité výzvy v správe dokumentov.
otvorený súbor
Zvyčajne pomocou funkcie fopen () na vytvorenie nového súboru alebo otvorenie existujúceho súboru toto volanie inicializuje objekt typu FILE, ktorý obsahuje všetky potrebné informácie na riadenie toku. Tu je prototyp tohto volania funkcie:
FILE *fopen (const char * názov súboru, režim const char *);
Názov súboru je reťazec na pomenovanie súboru, hodnota režimu prístupu môže byť jedna z nasledujúcich hodnôt:
vzor | popis |
r | Otvorte existujúci textový súbor, ktorý umožňuje jeho čítanie. |
w | Otvorte textový súbor, ktorý umožňuje zapisovanie do súboru. Ak súbor neexistuje, vytvorí sa nový súbor. Tu váš program zapíše obsah od začiatku súboru. Ak súbor existuje, bude skrátený na nulovú dĺžku a prepísaný. |
a | Otvorte textový súbor a zapíšte do súboru v režime pripojenia. Ak súbor neexistuje, vytvorí sa nový súbor. Tu váš program pripojí obsah k súborom, ktoré už máte. |
r+ | Otvorte textový súbor, ktorý vám umožní čítať a zapisovať súbor. |
w+ | Otvorte textový súbor, ktorý vám umožní čítať a zapisovať súbor. Ak súbor už existuje, súbor sa skráti na nulovú dĺžku a ak súbor neexistuje, vytvorí sa nový súbor. |
a+ | Otvorte textový súbor, ktorý vám umožní čítať a zapisovať súbor. Ak súbor neexistuje, vytvorí sa nový súbor. Čítanie začína na začiatku súboru a zápis je iba v režime pripojenia. |
Ak je spracovaný binárny súbor, použite nasledujúci režim prístupu na nahradenie vyššie uvedeného:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
uzavretý súbor
Na zatvorenie súboru použite funkciu fclose(). Prototyp funkcie je nasledovný:
int fclose ( FILE *fp );
- Ak je súbor úspešne zatvorený, funkcia fclose() vráti nulu a ak chyba vráti EOF. Táto funkcia v skutočnosti odstráni dáta z vyrovnávacej pamäte, zatvorí súbor a uvoľní všetku pamäť použitú pre tento súbor. EOF je konštanta definovaná v hlavičkovom súbore stdio.h
Štandardná knižnica C poskytuje rôzne funkcie na čítanie a zápis súborov podľa znakov alebo ako reťazec s pevnou dĺžkou.
Zapíšte do súboru
Tu sú najjednoduchšie funkcie na zapisovanie znakov do streamu:
int fputc ( int c , SÚBOR *fp );
Funkcia fputc () zapíše hodnotu znaku parametra c do výstupného toku, na ktorý fp ukazuje. Ak sú zápisy úspešné, vráti zapísaný znak a EOF, ak sa vyskytne chyba. Na zapísanie reťazca končiaceho sa nulou do streamu môžete použiť nasledujúcu funkciu:
int fputs ( const char *s , FILE *fp );
Funkcia fputs () zapíše reťazec s do výstupného prúdu, na ktorý ukazuje fp. Ak je zápis úspešný, vráti nezápornú hodnotu a EOF, ak sa vyskytne chyba. Môžete použiť aj funkciu int fprintf (FILE * fp, const char * format,...) zapíše reťazec do súboru. Skúste nasledujúci príklad:
Poznámka:Uistite sa, že máte dostupný adresár tmp, a ak neexistuje, musíte si ho najprv vytvoriť v počítači.
/ tmp je zvyčajne dočasný adresár v systéme Linux. Ak používate systém Windows, musíte ho upraviť na existujúci adresár v lokálnom prostredí, ako napríklad: C: \ tmp, D: \ tmp atď.
živým príkladom
#include
Keď je vyššie uvedený kód skompilovaný a spustený, vytvorí sa nový súbor test.txt v adresári / tmp. A zapisuje na dva riadky pomocou dvoch rôznych funkcií. Ďalej si prečítame tento súbor.
Prečítajte si súbor
Nasleduje najjednoduchšia funkcia na čítanie jedného znaku zo súboru:
int fgetc ( SÚBOR * fp );
Funkcia fgetc () načíta znak zo vstupného súboru, na ktorý ukazuje fp. Návratová hodnota je prečítaný znak a EOF, ak sa vyskytne chyba. Nasledujúca funkcia vám umožňuje čítať reťazec z prúdu:
char *fgets ( char *buf , int n , FILE *fp );
Funkcia fgets () číta n-1 znakov zo vstupného toku riadeného fp. Skopíruje čítaný reťazec do vyrovnávacej pamäte a na koniec pridá znak null, čím ukončí reťazec.
Ak táto funkcia pred prečítaním posledného znaku narazí na znak prerušovaného riadku '\ n' alebo EOF konca súboru, vráti sa iba k prečítaným znakom vrátane zalomení riadkov. Môžete tiež použiť funkciu int fscanf (FILE * fp, const char * formát,...) na prečítanie reťazca zo súboru, ale čítanie prestane, keď narazíte na prvú medzeru a zalomenie riadku.
živým príkladom
#include
Keď je vyššie uvedený kód skompilovaný a spustený, načíta súbory vytvorené v predchádzajúcej časti, čím sa získajú nasledujúce výsledky:
1: Toto 2: testuje fprintf...
3: Toto je testovanie fputs...
Po prvé, metóda fscanf() číta iba toto .pretože vzadu narazí na medzeru. Po druhé, zavolajte functon fgets (), aby ste prečítali zostávajúcu časť až do konca riadku. Nakoniec zavolajte fgets () na úplné prečítanie druhého riadku.
Binárna I/O funkcia
Nasledujúce dve funkcie sa používajú pre binárny vstup a výstup:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
Obe funkcie sa čítajú a zapisujú pre úložné bloky – zvyčajne polia alebo štruktúry.
Vyššie uvedené čítanie a zápis súborov C patrí spoločnosti HDV Phoelectron Technology Ltd., softvérovej technickej prevádzke. A spoločnosť pre sieťové zariadenia (ako napríklad: ACONU/ komunikáciaONU/ inteligentnýONU/ vlákninaONU, atď.) spojila výkonný softvérový tím, pre každého zákazníka prispôsobiť exkluzívne požiadavky, ktoré to potrebujú, tiež nechať naše produkty inteligentnejšie a pokročilejšie.