Zadani 2. domaciho ukolu ------------------------ Napiste program, ktery bude fungovat jako velice jednoduchy C-ckovy preprocesor. Bude umet jedinou direktivu a tou bude: #include "jmeno souboru" Neboli program bude mit jeden parametr, tim bude jmeno souboru, ktery ma zpracovat, napr: hw2.exe muj_text.txt Muzete predpokladat, ze pokud je parametr pritomen (jinak rozumna chyba), pak urcuje cestu k+jmeno souboru (pokud existuje a lze otevrit, jinak chyba), ktery je textovy a jehoz radka neni delsi nez rozumna konstanta znaku vcetne \n. Upozorneni: Tento predpoklad je zde pouze pro zjednoduseni ulohy, v opravdovem programu by se podobne predpokaldy nikdy nemely vyskytovat! Soubor je tedy posloupnost radek s textem. Rozdelujeme dva typy radek: 1) Direktiva (prikaz) preprocesoru takovyto radek ma jako prvni "nebily" znak '#' po nem nasleduje libovolne mnozstvi bilych znaku a samotny prikaz. Nas preprocesor bude umet jediny prikaz: include. Kdyz tedy preprocesor narazi na radku typu: # include "jiny_soubor.txt" otevre tento jiny soubor a zacne prednostne zpracovavat tento (rekurzivne) vcetne pripadnych dalsich includu a pak az dokonci praci s puvodnim souborem. Pokud v souboru bude radek s direktivou preprocesoru, ale nepujde o include, nahlaste chybu. 2) Zbyle radky (tedy ty, jejichz prvni nebily znak neni #) jsou radky textu, ktery se pouze zkopiruje na vystup. Poznamka: Pro ulehceni prace (i me) uvazujme pouze platformu windows, tedy pro cestu berme jako oddelovac zpetna lomitka (pokud trvate na programovani na unixu, explicitne me na to v e-mailu upozornete a pocitejte s delsi odezvou a strucnejsi odpovedi ;o) ). Poznamka: Parametrem include muze byt i cesta k souboru, pripadny dalsi include se resi relativne k poslednimu includovanemu souboru nikoli relativne k adresari, kde byl program spusten. Pr: === * Soubor "a" -------------- Haf #include "b\x" Baf -------------- * Soubor "c" -------------- End -------------- * Soubor "b\x" -------------- 1 #include "y" 2 #include "f\123" 3 -------------- * Soubor "b\y" -------------- Uff -------------- * Soubor "b\f\123" -------------- # include "..\..\c" -------------- * Vystup prikazu: hw2.exe a -------------- Haf 1 Uff 2 End 3 Baf --------------