Pro práci s daty na disku potřebujete deskriptor. V C je tento popisovač ukazatelem vráceným funkcí fopen. Určíte režim, získáte ukazatel a použijete jej ke streamování dat do nebo ze souboru. Nejběžnější režimy jsou r pro čtení, w pro zápis a a pro připojení. Pokud je vyberete nesprávně, můžete ztratit data nebo způsobit selhání programu.
Zvažte jednoduchý úkol: zapište čísla od 1 do 10 do souboru.
Tento kód otevře soubor s názvem out v režimu w. Toto je režim přepisování záznamu (destruktivní záznam). Pokud soubor out neexistuje, systém jej vytvoří. Pokud již existuje, jeho starý obsah bude zcela vymazán a nahrazen novým. Proměnná f ukládá ukazatel na soubor. Tento ukazatel se používá pro všechny následující operace. Pokud soubor nelze otevřít (kvůli problémům s oprávněními, plnému disku nebo neexistující cestě), f je nastaveno na NULL.
Výstupní funkce je zde fprintf. Funguje přesně jako printf, ale prvním argumentem je souborový ukazatel. Jakmile je práce dokončena, fclose uvolní zdroj.
Ošetření chyb při práci se soubory v hlavní funkci
Tento fragment kódu je prvním ze série příkladů, které vrací kód chyby z funkce main. Když fopen selže, f obsahuje hodnotu null. V C je nula interpretována jako nepravda. Všechny ostatní hodnoty jsou interpretovány jako pravdivé. Operátor ! tuto booleovskou logiku invertuje.
Konstrukt if (!f) kontroluje, zda je ukazatel null. To je ekvivalentní if (f == 0), ale první je standardní idiom. Pokud je podmínka pravdivá, program vrátí kód 1.
V systémech UNIX můžete tento ukončovací kód zkontrolovat přímo z příkazového řádku. Říká vám, zda byl skript nebo program úspěšně proveden nebo zda došlo k chybě. Schopnost zachytit takové chyby včas ušetří hodiny ladění v budoucnu.
Proč se vůbec obtěžovat s návratovými kódy, když můžete jen způsobit havárii? Protože řízené ukončení je lepší než nedefinované chování. Můžete zaprotokolovat chybu, upozornit uživatele nebo zkusit operaci znovu. Dovolit programu tiše selhat je líné inženýrství.
Krása tohoto přístupu spočívá v jeho jednoduchosti. Otevřete to. Kontrola. Napište to. Zavřete to. Žádná magie. Žádný skrytý stav. Jen ukazatel a soubor.
Co když si potřebujete přečíst, co jste právě napsali? Nebo přidat data do existujícího protokolu bez zničení historie? Řádek režimu vše změní. r ponechá soubor beze změny. a připojí data na konec. w vymaže veškerý obsah. Vybírejte pečlivě.

















