C nezvyšuje složitost zpracování textu. Odstraňuje vrstvy abstrakce a ponechává vám holou mechaniku. Pokud jste se podívali do dokumentace C, pravděpodobně jste si všimli, že všechny funkce pro vstup/výstup textu jsou v knihovně stdio. Toto je zkratka pro standardní vstup/výstup. Je to základ pro interakci programů C s vnějším světem.
Většina začátečníků začíná s stdin a stdout. Jedná se o standardní streamy. Označují, odkud program získává data a kam odesílá výsledky. Pokud vaše aplikace potřebuje pouze jeden vstupní zdroj a jednu výstupní jímku, nepotřebujete složitou manipulaci se soubory. Data jednoduše předáváte přes příkazový řádek.
Šest základních vláken
Hlavička stdio poskytuje šest specifických příkazů pro interakci s těmito vlákny. Jsou jednoduché. Řídit.
- printf : Zapíše formátovaný text do stdout.
- scanf : Čte formátovaná data z stdin.
- puts : Vytiskne řetězec na obrazovku.
- získá : Přečte řádek textu z klávesnice.
- putc : Zapíše jeden znak do stdout.
- getc nebo getchar : Přečte jeden znak z stdin.
Proč je používat? Protože mohou být přesměrováni. Zde přichází síla jazyka C. Nemusíte měnit svůj kód, abyste mohli číst data ze souboru místo z klávesnice. Jednoduše změníte příkaz, který zadáte do terminálu.
Jednoduché počítání znaků
Podívejme se na praktický příklad. Představte si, že potřebujete program, který spočítá celkový počet znaků v textu, který zadáte. Zde je kód:
Tento kód čeká na zadání. Zadáte řetězce. Až budete hotovi, stiskněte CTRL-D. To signalizuje konec souboru (eof ). Funkce gets vrátí nulu, když je dosaženo konce souboru, což přeruší smyčku. Konečný počet se zobrazí na obrazovce.
Ale tady je ten trik. Pro počítání znaků v souboru jste nemuseli upravovat kód. Právě jste přidali malou instrukci do shellu.
Přesměrování vstupu a výstupu
Pokud jste tento program zkompilovali do spustitelného souboru s názvem xxx, můžete mu dát soubor.
Šikmá závorka přesměruje obsah název_souboru na stdin. Program si myslí, že čte z klávesnice. Ve skutečnosti to čte z disku.
Můžete také použít trubky. Tím se výstup jednoho příkazu předá přímo druhému.
Výsledek je stejný. Příkaz cat vytiskne obsah souboru na standardní výstup. Potrubí to předá vašemu programu.
Výstup můžete také přesměrovat. Místo zobrazení počtu na obrazovce jej můžete uložit.
Nyní xxx čte z název souboru a zapisuje výsledek do nového textového souboru s názvem out. To je mocná příležitost. Umožňuje vám propojit nástroje dohromady bez psaní dalšího kódu pro práci s ukazateli souborů.
Když není dostatek vláken
Někdy přesměrování nestačí. Možná budete muset otevřít více souborů současně. Možná vytváříte textový editor, který ukládá konfigurační soubory. Možná budete muset zkontrolovat, zda jste dosáhli konce souboru, aniž byste způsobili selhání.
V takových případech potřebujete možnosti přímé manipulace se soubory. Ty se také nacházejí v stdio, ale fungují spíše s ukazateli souborů než se standardními proudy.
- fopen : Otevře soubor pro čtení nebo zápis.
- fclose : Zavře soubor po dokončení práce s ním.
- feof : Zkontroluje, zda bylo dosaženo konce souboru.
- fprintf : Zapisuje formátovaná data do konkrétního souboru.
- fscanf : Čte formátovaná data z konkrétního souboru.
- fputs : Zapíše řetězec do souboru.
- fgets : Přečte řádek ze souboru.
- fputc : Zapíše symbol do souboru.
- fgetc : Přečte znak ze souboru.
Tyto funkce vám poskytují větší kontrolu. Můžete spravovat více vláken současně. Můžete se přesně rozhodnout, jaká data budou zapsána do kterého souboru.
Jakou cestu zvolíte? Snadné přesměrování stdin nebo ovládání přímých ukazatelů souborů? Záleží na tom, co tvoříte. U rychlých skriptů je králem přesměrování. Pro složité aplikace budete potřebovat funkce pro správu souborů.
Neexistuje žádná dokonalá odpověď. Existují pouze kompromisy.





















