Čtení a zápis souborů

Všechny funkce, které budeme pro tyto operace potřebovat najdeme ve standardní knihovně <stdio.h>. C podporuje tzv. bitový a textový režim.

Rozdíl režimů

Pro počítač žádný, protože i textový soubor je pro něj změť bajtů, ale ke kterým má instrukce, jak je převádět. Pro vás je důležité vědět, že se u bitového a textového režimu používají jiné funkce pro práci s daty souboru.

Jak na to?

FILE * ukazatel; //vytvoříme ukazatel ukazatel = fopen("file.txt", "r"); //otevřeme soubor file.txt, v režimu čtení if(ukazatel == NULL){ //zkontrolujeme jestli se soubor načetl správně return 1; } /* nyní pracujeme s obsahem souboru */ fclose(ukazatel); //nezapomínáme soubor na konci uzavřít

Režimy

Základní textové jsou:

„r“ = pouze čtení

„w“ = pouze přepisování

„a“ = připisování na konce souboru

A co, když chci číst i zapisovat? Stačí pouze za písmeno přidat '+' (např. „r+“). Pro jejich bitovou variantu přidáme 'b', stejně jako v předchozím případě.

Čtení obsahu

Textový režim

Pro čtení můžeme použít univerzální funkci fscanf, nebo pokud nám stačí načítat po charu tak máme k dispozici funkci fgetc. Systaxe fscanf:

fscanf(ukazatel, typ, do čeho);

Syntaxe fgetc:

proměnná/ukazatel = fgetc(ukazatel);

Bitový režim

Zde máme jedinou funkci a to fread. Její syntaxe:

pocet_nactenych_polozek = fread(ukazatel_do_pameti, velikost_typu, pocet_nacitanych_jednotek, ukazatel_na_soubor);

Zápis

Textový režim

Opět máme 2 možnosti. Univerzální fprintf a fputs, který vkládád stringy. Syntaxe fprintf:

int x = 10; fprintf(ukazatel na soubor, 'Text "%i"\n', x); //prakticky stejné, jako klasické printf, pouze je třeba na začátku přidat ukazatel

fputs:

fputs(proměnná se stringem, soubor);

Bitový režim

Opět pouze 1 varianta, tentokrát fwrite.

fwrite (co, velikost typu, kolikrát, kam);

Pokud potřebujete celkovou syntaxi všech funkcí, doporučuji dokumentaci knihovny <stdio.h> a článek Soubory na linuxsoft.cz.