Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
strprg:c:soubory [08. 03. 2014, 10.34] rasa |
strprg:c:soubory [12. 03. 2014, 15.32] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Čtení a zápis souborů ====== | ====== Č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. | 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? ==== | ||
+ | <code c> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | ==== 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: | ||
+ | <code c> | ||
+ | fscanf(ukazatel, typ, do čeho); | ||
+ | </code> | ||
+ | Syntaxe fgetc: | ||
+ | <code c> | ||
+ | proměnná/ukazatel = fgetc(ukazatel); | ||
+ | </code> | ||
+ | == Bitový režim == | ||
+ | Zde máme jedinou funkci a to fread. Její syntaxe: | ||
+ | <code c> | ||
+ | pocet_nactenych_polozek = fread(ukazatel_do_pameti, velikost_typu, pocet_nacitanych_jednotek, ukazatel_na_soubor); | ||
+ | </code> | ||
+ | |||
+ | ==== Zápis ==== | ||
+ | == Textový režim == | ||
+ | Opět máme 2 možnosti. Univerzální fprintf a fputs, který vkládád stringy. | ||
+ | Syntaxe fprintf: | ||
+ | <code c> | ||
+ | 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 | ||
+ | </code> | ||
+ | fputs: | ||
+ | <code c> | ||
+ | fputs(proměnná se stringem, soubor); | ||
+ | </code> | ||
+ | == Bitový režim == | ||
+ | Opět pouze 1 varianta, tentokrát fwrite. | ||
+ | <code c> | ||
+ | fwrite (co, velikost typu, kolikrát, kam); | ||
+ | </code> | ||
+ | ---- | ||
+ | Pokud potřebujete celkovou syntaxi všech funkcí, doporučuji [[http://www.cplusplus.com/reference/cstdio/|dokumentaci knihovny <stdio.h>]] a článek [[http://www.linuxsoft.cz/article.php?id_article=899|Soubory]] na linuxsoft.cz. |