Soubor I / O v programování C s příklady

V této příručce se naučíme provádět operace vstupu / výstupu (I / O) v souboru pomocí programovacího jazyka C.

I / O souboru C – obsah

1. Otevření souboru
2. Čtení souboru
3. Zápis souboru
4. Uzavření souboru
5. Čtení a zápis řetězců do souboru
6. Čtení a zápis binárních souborů v C

Než budeme podrobně diskutovat o každé operaci, pojďme si vzít jednoduchý C program:

Jednoduchý C program k otevření, čtení a zavření souboru

Ve výše uvedeném programu otevíráme soubor newfile.txt v režimu r, načítáme obsah souboru a zobrazujeme na konzole. podrobně pochopíme jednotlivé operace:

Otevření souboru

fopen() slouží k otevření souboru.
Syntaxe:

FILE pointer_name = fopen ("file_name", "Mode");

pointer_name může být cokoli z vašeho choice.
file_name je název souboru, který chcete otevřít. Zde zadejte úplnou cestu jako „C: \\ myfiles \\ newfile.txt“.

Při otevírání souboru musíte zadat režim. Režim, který používáme ke čtení souboru, je „r ”Což je„ režim pouze pro čtení “.
například:

FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");

Adresa prvního znaku je uložena v pointer fp.

Jak zkontrolovat, zda se soubor úspěšně otevřel?
Pokud se soubor neotevře úspěšně, bude ukazateli přiřazena hodnota NULL, takže logiku můžete psát takto :
Tento kód ověří, zda se soubor úspěšně otevřel nebo ne. Pokud se soubor neotevře, zobrazí se uživateli chybová zpráva.

..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}

Různé režimy otevírání souborů:

Soubor se otevírá pomocí funkce fopen(), při otevírání můžete podle požadavku použít kterýkoli z následujících režimů.
Režim „r“: Je to režim pouze pro čtení, což znamená, že pokud je soubor otevřen v režimu r, nedovolí vám psát a upravovat jeho obsah. Když fopen() úspěšně otevře soubor, vrátí adresu prvního znaku souboru, jinak vrátí NULL.

Režim „w“: Jedná se o zápis pouze režim. Funkce fopen() vytvoří nový soubor, pokud zadaný soubor neexistuje a pokud se mu soubor nepodaří otevřít, vrátí NULL.

Režim “ a ”: Používání tohoto režimu Obsah lze připojit na konec existujícího souboru. Stejně jako režim „w“, fopen() vytvoří nový soubor, pokud neexistuje. Při neúspěšném otevření vrátí NULL.
Ukazatel souboru ukazuje na: poslední znak souboru .

Režim „r +“: Tento režim je stejný jako režim „r“; se souborem otevřeným v tomto režimu však můžete provádět různé operace. Máte povoleno číst, zapisovat a upravovat obsah souboru otevřeno v režimu „r +“.
Ukazatel souboru ukazuje na: První znak souboru.

Režim „w +“: Stejný jako režim „w“ kromě operací, které lze provádět; soubor lze v tomto režimu číst, zapisovat a upravovat.
Režim „a +“: Stejné jako v režimu „a“; můžete číst a připojovat data v souboru, avšak v tomto režimu není povolená úprava obsahu.

Čtení souboru

Chcete-li soubor přečíst, musíme jej nejprve otevřít pomocí libovolného režimu, například pokud chcete pouze číst soubor, pak jej otevřete v režimu „r“. Na základě režimu vybraného během otevírání souboru můžeme se souborem provádět určité operace.

C Program pro čtení souboru

fgetc (): Tato funkce načte znak z pozice aktuálního ukazatele a při úspěšném čtení přesune ukazatel na další znak v souboru. Jakmile ukazatel dosáhne na konec souboru , tato funkce vrací EOF (End of File). V našem programu jsme použili EOF k určení konce souboru.

Zápis do souboru

Chcete-li soubor napsat, musí otevřít soubor v režimu, který podporuje zápis. Pokud například otevřete soubor v režimu „r“, nebudete jej moci zapsat, protože „r“ je režim pouze pro čtení, který umožňuje pouze čtení.

Příklad: C Program pro zápis soubor

Tento program požádá uživatele o zadání znaku a tento znak zapíše na konec souboru. Pokud soubor neexistuje, tento program vytvoří soubor se zadaným názvem a zapíše do něj vstupní znak.

Uzavření souboru

fclose(fp);

Funkce fclose () se používá k uzavření otevřeného souboru. Jako argument musíte uvést ukazatel na soubor, který chcete zavřít.

Příklad pro zobrazení operace Otevřít, číst, zapisovat a zavřít v C

Jak číst / zapisovat (I / O) Strings in Files – fgets & fputs

Zde probereme, jak číst a zapisovat řetězce do souboru.

char *fgets(char *s, int rec_len, FILE *fpr)

s: Pole znaků pro uložení řetězců.
rec_len: Délka vstupního záznamu.
fpr: Ukazatel na vstupní soubor.
Vezměme si příklad:

Příklad pro načtení řetězců ze souboru v programování C

Ve výše uvedeném příkladu jsme použili funkci fgets, jako je tato:

fgets(str, 10, fpr)

Zde str představuje řetězec (pole znaků), do kterého řetězec po načtení ze souboru ukládáte.
10 je délka řetězce, který je třeba číst pokaždé.
fpr je ukazatel na soubor, který se bude číst.

Proč jsem použil if (fgets (str, 10, fpr) == NULL jako logika k určení konce souboru?
Ve výše uvedených příkladech jsme použili ch == EOF, abychom poznali konec souboru. Zde jsme použili tuto logiku, protože fgets vrací NULL, když již nejsou k dispozici ke čtení žádné záznamy .

Program C – zápis řetězce do souboru

int fputs ( const char * s, FILE * fpw );

char *s – pole char.
FILE *fpw – Ukazatel (typu FILE) na soubor, který se má zapsat.

fputs vyžaduje dva argumenty –

fputs(str, fpw)

str – str představuje pole, ve kterém je řetězec uložen.
fpw – ukazatel SOUBORU na výstupní soubor, do kterého je třeba zapsat záznam.

Uveďte poznámku o fputs:
fputs ve výchozím nastavení nepřidává nový řádek po zapsání každého záznamu, aby to bylo možné ručně – po každém zápisu do souboru můžete mít následující prohlášení.

fputs("\n", fpw);

I / O C FILE pro binární soubory

Zatím jsme se naučili pracovat se soubory v textových souborech, co když jsou soubory binární (například soubor .exe). Výše uvedené programy nebudou pro binární soubory fungovat, ale při manipulaci s binárními soubory dojde k drobné změně. Hlavní rozdíl spočívá v režimech názvu souboru &. Rozumíme tomu pomocí příkladu. Řekněme, že mám dva binární soubory bin1.exe & bin2.exe – chci zkopírovat obsah souboru bin1.exe do souboru bin2.exe:

Příklad: Čtení a zápis binárních souborů v C

Poznámka: Režimy otevírání souborů jsou „rb“ a „wb“ namísto „r“ & „w“ ..

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *