{{indexmenu_n>4}} ======== HW 04 - Hledání textu v souborech ======== ^ Termín odevzdání | 25.03.2017 23:59 PDT (([[https://www.timeanddate.com/time/zones/pst|PDT]]))| ^ Povinné zadání | 3b | ^ Volitelné zadání | 4b| ^ Bonusové zadání | není | ^ Počet uploadů | 20 | ====== Povinné zadání ====== * Bez použití knihovny '''' (nebo podobné) napište program, který ze zadaného souboru ''FILE'' vypíše všechny řádky obsahující řetězec ''PATTERN''. * následně volán s argumenty ''./grep PATTERN FILE''. * Za konec řádku je považován znak '''\n''' (a tento znak není povážován za součást řádku). /* Program implementujte v souboru ''grep.c'', který bude kompilován jako gcc grep.c -Wall -Werror -pedantic -g -std=c99 -o grep */ ==== Příklad 1 ==== ^ ^ Očekávaný výstup ^ Očekávaný chybový výstup ^ Návratová hodnota ^ | $ ./grep "string.h" grep.c # kde grep.c je váš zdrojový soubor | žádný | žádný | 0 | ==== Příklad 2 ==== ^ PATTERN ^ Vstupní soubor ^ Očekávaný výstup ^ Očekávaný chybový výstup ^ Návratová hodnota ^ | vzor | Tady je jeden vzor. A jeste jeden vzor. A tady neni zadny. | Tady je jeden vzor. A jeste jeden vzor. | žádný | 0 | ==== Příklad 3 ==== ^ PATTERN ^ Vstupní soubor ^ Očekávaný výstup ^ Očekávaný chybový výstup ^ Návratová hodnota ^ | Vzor | Tady je jeden vzor. A jeste jeden vzor. A tady neni zadny. | žádný | žádný | 0 | ====== Volitené zadání ====== Volitelné zadání rozšiřuje povinné zadání o precizované ošetření možných vstupů. Proto v případě jakékoli chyby vypište smysluplný důvod chyby na standardní chybový výstup a program bude ukončen s definovanou nenulovou návratovou hodnotou. Chyby, které byste měli detekovat, jsou uvedeny v následující tabulce. Chyby se musí vyhodnocovat v níže uvedeném pořadí. To znamená, že pokud se program zavolá jako ./grep '' pak program vyhodnoti chybu podle prvního řádku a skončí (nikoli podle druhého řádku). ^ Chyba ^ Očekávaný chybový výstup ^ Návratová hodnota ^ | Nejsou uvedeny oba arumenty | Error: Chybejici argument(y). | 100 | | Argument PATTERN je prázdný. Můžete otestovat: ./grep '' soubor.c | Error: Prazdny PATTERN. | 101 | | Neexistující vstupní soubor. | Error: Soubor nelze otevrit. | 102 | | Nepodařilo se dynamicky alokovat paměť. | Error: Alokace pameti selhala. | 200 | ====== Odevzdávané soubory a kompilace ====== /* Odevzdávejte soubory *.h a *.c. Pouze soubor ''grep.c'' může obsahovat funkci ''main()'', program však může být složen z více souborů. Všechny soubory uložte přímo do zip archivu a **nevytvářejte žádné složky**. **Povinné soubory**: */ Odevzdávejte pouze jeden soubor: * ''grep.c'' - implementace jednoduchého programu pro hledání řetězce v textových souborech (obsahuje funkci main) ^ ^ Povinné zadání ^ Volitelné zadání ^ ^ Název v BRUTE | HW04 || ^ Kompilace pomocí | gcc -std=c99 -Werror -Wall -pedantic ||