PB071 Zápočtový příklad Word Count Napište program wc (word count, nemá nic společného se zařízením tolety), který bude pracovat jako zjednodušený UNIXový nástroj wc(1). ./wc [OPTION] [FILE...] Program bude očekávat libovolný počet parametrů, které reprezentují názvy souborů. Pokud není zadaný žádný soubor, program bude číst ze standardního vstupu. Taky z něj bude číst místo souboru se jménem -. Navíc může být prvním parametrem jeden z přepínačů -s, -l, -w nebo -t. Formát vstupních souborů Každý vstupní soubor je textový. Počet řádků ani jejich délky nejsou omezeny. Formát výstupu Program pro každý vstupní soubor zjistí počet bytů, počet řádků a počet slov. Pro zjednodušení považujte za slovo každou neprázdnou sekvenci znaků, která neobsahuje žádné bílé znaky (whitespaces). Pro každý soubor program vypíše řádek tvaru VELIKOST ŘÁDKY SLOVA NÁZEV Soubory budou seřazené podle přepínače: žádný vzestupně podle názvu -s sestupně podle velikosti -l sestupně podle počtu řádků -w sestupně podle počtu slov Pokud je pro některé soubory hodnota řadícího kritéria stejná, seřaďte tyto soubory vzestupně podle názvu. Pokud je zadaný přepínač -t, místo seřazeného výstupu vypište součty odpovídajících hodnot pro všechny soubory. Ukázka Pokud program spustíme nad soubory s těmito vlastnostmi (maximální hodnoty jsou zvýrazněné): název souboru velikost řádky slova words.txt 338 64 98 lines.txt 217 79 50 bytes.txt 579 14 40 pak na standardní výstup vypíše bez přepínače: 579 14 40 bytes.txt 217 79 50 lines.txt 338 64 98 words.txt s přepínačem -w: 338 64 98 words.txt 217 79 50 lines.txt 579 14 40 bytes.txt s přepínačem -t: 1134 157 188 total Požadavky a poznámky • Pro reprezentaci informací o souboru si definujte vlastní strukturu. • Na uložení záznamů použijte nějakou dynamickou datovou strukturu. • Pokud selže otevření některého vstupního souboru, program vypíše na standardní chybový výstup nějakou smysluplnou zprávu a bude pokračovat zpracováním dalších souborů. • Selhání ostatních standardních funkcí (např. pro alokaci paměti) ošetřete způsobem známým z domácích úkolů a cvičení. • Program musí před ukončením uvolnit všechny alokované zdroje. 1