PB071 cvičný skúškový príklad Juraj Fiala 4. mája 2022 Zadanie Vašou úlohou bude naprogramovať zjednodušenú verziu nástroja grep. grep je konzolový nástroj, ktorý slúži na vyhľadávanie v textových súboroch. V našej zjednodušenej verzii budeme hľadať iba obyčajné reťazce a to iba v súboroch, ktoré sú dané v argumentoch. Pri náleze výskytu reťazca SUBSTR program vypíše riadok, na ktorom sa nachádza, spolu s A riadkami pred ním a B riadkami po ňom. Aby sme jednotlivé výskyty od seba vedeli rozlíšiť, po každom takomto bloku vypíše reťazec „-----“ na samostatnom riadku (viď príkladné výstupy). Argumenty bude brať v nasledovnom poradí: ./simple_grep SUBSTR A B FILE1 FILE2... Ak bude reťazec SUBSTR prázdny alebo čísla A a B záporné, program zlyhá s vhodnou chybovou hláškou. Súborov môže byť ľubovoľné množstvo a program ich spracováva rad za radom. Ak sa nejaký súbor nepodarí otvoriť, program vypíše vhodnú hlášku ale nezlyhá a pokračuje ďalej. Pokiaľ na vstupe nebude žiaden súbor, program nevypíše nič. Pri implementácii si dávajte pozor na správnu funkčnú dekompozíciu a prácu so zdrojmi. Nápoveda Môže sa vám hodiť funkcia strstr(). Najprv skúste spraviť základnú implementáciu, potom pridať podporu pre číselné argumenty. Testovacie súbory nájdete v študijných materiáloch. Príklady $ ./simple_grep teacup 1 1 alice.txt The first witness was the Hatter. He came in with a teacup in one hand and a piece of bread and butter in the other. ----- one foot to the other, looking uneasily at the Queen, and, in his confusion, he bit a large piece out of his teacup instead of the bread and butter. ------ The miserable Hatter dropped his teacup and bread and butter and went down on one knee. "I'm a poor man, Your Majesty," he began. ------ $ ./simple_grep "Oh, no" 0 0 sherlock.txt “Oh, no, sir. It is quite separate and was left me by my uncle Ned in ----- “Oh, no, sir! He was too good and kind to leave me so. Why, all the ----- “Oh, no, no! I want the doctor’s advice and help, too. It’s about Isa. ----- “Oh, no, not now. I shall have to tell my tale to the police; but, ----- “‘Oh, no, it is in the house.’ ----- “‘Oh, no.’ ----- 1