====== Čtení a zápis souborů ====== Všechny funkce, které budeme pro tyto operace potřebovat najdeme ve standardní knihovně . 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 [[http://www.cplusplus.com/reference/cstdio/|dokumentaci knihovny ]] a článek [[http://www.linuxsoft.cz/article.php?id_article=899|Soubory]] na linuxsoft.cz.