Týden 12
Proudy
Obecně, pokud se v jazyce C pracuje s jakýmkoliv vstupem nebo výstupem, je tento vstup nebo výstup reprezentován jako proud. V C jsou některé vstupní proudy předdefinovány a jsou otevřeny při startu programu, abychom mohli v programu komunikovat s okolím (např. uživatel). Jsou to proudy:
- stdin - standardní vstup
- stdout - standardní výstup
- stderr - standardní chybový výstup (zapisují se chybová hlášení)
Definice těchto proudů se nacházejí v hlavičkovém souboru stdio.h a jsou implicitně užívány funkcemi, které jsme doposud používali k výstupu a vstupu na/z obrazovku/y. Standardní proudy mají typ ukazatele na strukturu FILE, lze je tedy užívat ve všech vstupně/výstupních funkcích, které mají cílový proud jako svůj argument - např. fgets.
Práce se soubory
Se soubory (proudy) lze pracovat ve dvou módech:
- binární proud - data se neinterpretují (jsou to byty)
- textový proud - data se interpretují jako text (znaky konce řádků a jiné)
Před čtením nebo zápisem do souboru je nutné otevřít správně nastavený proud pomocí funkce fopen. Po úspěšném otevření proudu - je třeba zkontrolovat návratovou hodnotu, můžeme pro čtení nebo zápis používat knihovní funkce ze souboru stdio.h - zpravidla začínají písmenem f... Nakonec je potřeba proud zavřít pomocí funkce fclose.
Výpis do textového souboru by mohl vypadat takto:
#include <stdio.h> int main(void) { // otevri soubor a zkontroluj, zda se povedlo FILE * out = fopen("output.txt", "w"); if (out == NULL) { printf("Otevreni souboru output.txt pro zapis se nezdarilo"); // program skoncil s chybou - kvuli souboru return 1; } // vypis do souboru Hello, World! a zavri jej fputs("Hello, World!", out); fclose(out); // program skoncil bez chyby return 0; }