Popisuje, jak programátor C vytváří, otevírá a zavírá textový soubor nebo binární soubor.
Soubor znamená řadu bajtů, ať už jde o textový soubor nebo binární soubor, jazyk C, nejenže poskytuje přístup k funkcím nejvyšší úrovně, ale také poskytuje základní (OS) volání pro zpracování souborů na úložném zařízení. . Tato kapitola vysvětlí důležité výzvy ve správě dokumentů.
otevřený soubor
Obvykle pomocí funkce fopen () k vytvoření nového souboru nebo otevření existujícího souboru toto volání inicializuje objekt typu FILE, který obsahuje všechny potřebné informace pro řízení toku. Zde je prototyp volání této funkce:
FILE *fopen ( const char * název souboru , const char * režim );
Zde název_souboru je řetězec pro název souboru, hodnota režimu přístupu může být jedna z následujících hodnot:
vzor | popis |
r | Otevřete existující textový soubor, který umožňuje jeho čtení. |
w | Otevřete textový soubor, který umožňuje zápis do souboru. Pokud soubor neexistuje, vytvoří se nový soubor. Zde váš program zapíše obsah od začátku souboru. Pokud soubor existuje, bude zkrácen na nulovou délku a přepsán. |
a | Otevřete textový soubor a zapište do souboru v režimu připojení. Pokud soubor neexistuje, vytvoří se nový soubor. Zde váš program připojí obsah k souborům, které již máte. |
r+ | Otevřete textový soubor, který vám umožní číst a zapisovat soubor. |
w+ | Otevřete textový soubor, který vám umožní číst a zapisovat soubor. Pokud soubor již existuje, zkrátí se na nulovou délku a pokud soubor neexistuje, vytvoří se nový soubor. |
a+ | Otevřete textový soubor, který vám umožní číst a zapisovat soubor. Pokud soubor neexistuje, vytvoří se nový soubor. Čtení začíná na začátku souboru a zápis je pouze v režimu připojení. |
Pokud je zpracováván binární soubor, použijte k nahrazení výše uvedeného následující režim přístupu:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
uzavřený soubor
Chcete-li soubor zavřít, použijte funkci fclose(). Prototyp funkce je následující:
int fclose ( FILE *fp );
- Pokud je soubor úspěšně uzavřen, funkce fclose() vrátí nulu a pokud chyba vrátí EOF. Tato funkce ve skutečnosti odstraní data z vyrovnávací paměti, zavře soubor a uvolní veškerou paměť použitou pro tento soubor. EOF je konstanta definovaná v záhlaví souboru stdio.h
Standardní knihovna C poskytuje různé funkce pro čtení a zápis souborů podle znaků nebo jako řetězec s pevnou délkou.
Zapište do souboru
Zde jsou nejjednodušší funkce pro zápis znaků do streamu:
int fputc ( int c , SOUBOR *fp );
Funkce fputc () zapíše hodnotu znaku parametru c do výstupního proudu, na který fp ukazuje. Pokud jsou zápisy úspěšné, vrátí zapsaný znak a EOF, pokud dojde k chybě. K zápisu řetězce končícího nulou do streamu můžete použít následující funkci:
int fputs ( const char *s , FILE *fp );
Funkce fputs () zapíše řetězec s do výstupního proudu, kam ukazuje fp. Pokud jsou zápisy úspěšné, vrátí nezápornou hodnotu a EOF, pokud dojde k chybě. Můžete také použít funkci int fprintf (FILE * fp, const char * formát,...) zapíše do souboru řetězec. Zkuste následující příklad:
Poznámka: Ujistěte se, že máte dostupný adresář tmp, a pokud neexistuje, musíte jej nejprve vytvořit v počítači.
/ tmp je obvykle dočasný adresář v systému Linux. Pokud používáte systém Windows, musíte jej upravit na existující adresář v místním prostředí, například: C: \ tmp, D: \ tmp atd.
živým příkladem
#zahrnout
Když je výše uvedený kód zkompilován a spuštěn, vytvoří nový soubor test.txt v adresáři / tmp. A zapisuje na dva řádky pomocí dvou různých funkcí. Dále si přečteme tento soubor.
Přečtěte si soubor
Následuje nejjednodušší funkce pro čtení jednoho znaku ze souboru:
int fgetc ( SOUBOR * fp );
Funkce fgetc () čte znak ze vstupního souboru, na který ukazuje fp. Vrácená hodnota je přečtený znak a EOF, pokud dojde k chybě. Následující funkce vám umožňuje číst řetězec z proudu:
char *fgets ( char *buf , int n , FILE *fp );
Funkce fgets () čte n-1 znaků ze vstupního proudu řízeného fp. Přečtený řetězec zkopíruje do bufferu buf a na konec připojí znak null, aby se řetězec ukončil.
Pokud tato funkce narazí před přečtením posledního znaku na znak přerušeného řádku '\ n' nebo EOF konce souboru, vrátí se pouze k přečteným znakům, včetně zalomení řádků. Můžete také použít funkci int fscanf (FILE * fp, const char * formát,...) k načtení řetězce ze souboru, ale přestane číst, když narazí na první mezeru a zalomení řádku.
živým příkladem
#zahrnout
Když je výše uvedený kód zkompilován a spuštěn, přečte soubory vytvořené v předchozí části a vytvoří následující výsledky:
1: Toto 2: testuje fprintf...
3: Toto je testování fputs...
Za prvé, metoda fscanf() čte pouze This .protože vzadu narazí na mezeru. Za druhé, zavolejte functon fgets (), abyste přečetli zbývající část až do konce řádku. Nakonec zavolejte fgets () pro úplné přečtení druhého řádku.
Binární I/O funkce
Pro binární vstup a výstup se používají následující dvě funkce:
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 );
Obě funkce jsou určeny pro čtení a zápis pro úložné bloky – obvykle pole nebo struktury.
Výše uvedené čtení a zápis souborů C patří společnosti HDV Phoelectron Technology Ltd., softwarově technickému provozu. A společnost pro síťová zařízení (jako jsou: ACONU/ komunikaceONU/ inteligentníONU/ vlákninaONU, atd.) spojila výkonný softwarový tým, pro každého zákazníka přizpůsobí exkluzivní požadavky, které to potřebují, také nechejte naše produkty inteligentnější a pokročilejší.