6 - Textové řetězce

Cíle cvičení

  1. Textové řetězce.

Materiály

Textové řetězce

  • Definujte textový řetězec “Everybody likes PRP” a vypište ho. Následně vypište z tohoto řetězce pouze “likes PRP” a nakonec řetězec změňte na “Tom likes PRP” a vypište ho. Přemýšlejte, jak to provést nejúsporněji.
  • Naprogramujte funkce odpovídající funkcím strlen, strcmp a strncmp, např. pojmenované my_strlen.

Implementace variant programu cat

  • Naprogramujte zjednodušenou verzi programu cat, např. pojmenovanou cat-basic. Načtěte vstup ze stdin a zase ho vypište na výstup (stdout).

Příklad výstup cat-basic

  • Upravte program tak, aby vypsal vstup až za první mezerou , cat-skip

Příklady výstupu cat-skip

  • Vypište každe slovo ze vstupu na samostatný řádek (za oddělovače slov považujte mezeru, konec řádku \n a tabulátor \t).

Příklad výstupu cat-words

  • Nyní zkuste totéž, ale za každé slovo vypište i jeho délku a slova “and” a “or” označte.

Příklad výstupu cat-words-len

Načtení textového řetězce

  • Definujte pole znaků fixní velikosti např.
     int str[STRING_LEN + 1];
    a realizujte načtení textového řetězce ze standardního vstupu jako řádku zakončeného znakem \n, např. funkcí getchar(), podobně jako v předchozích příkladech.
  • Pokud by načítaný počet znaků překročil STRING_LEN, reportujte chybu vstupu a ukončete program s návratovou hodnotu EXIT_FAILURE.
  • V programu dále uvažujte maximální počet slov #define MAX_WORDS 64 a vytvořte pole ukazatelů na řetězce incializované na nulu.
     char **words[MAX_WORDS] = {};
  • Předchozí příklady cat-words a cat-words-len implementujte tak, že jednotlivá slova budou odkazována z proměnné words a v načteném řetězci budou slova oddělena znakem konce řetězce.

Příklad

  • Definici hodnot maker STRING_LEN a MAX_WORDS realizujte tak, aby bylo možné hodnoty definovat při překladu programu, např.
    clang -DSTRING_LEN=128 cat.c -o cat
    a program otestujte pro různé varianty hodnot a vstupů tak, aby došlo k detekci chyby vstupu

Příklad definice makra STRING_LEN

Implementace variant programu tr

  • Načtěte vstup a vypište jej s malými písmeny přepsanými na velké a naopak

Příklad výstupu programu cap

  • Nyní zkuste zjednodušenou verzi programu tr-simple. Program bude mít zadány dva argumenty na příkazové řádce, které budou sloužit jako předpis pro překlad znaků.

Příklad výstupu tr-simple

  • Zkuste si pospojovat dnešní programy.

Příklad výstupu

Kódy ze cvičení

courses/b0b36prp/labs/lab06.txt · Last modified: 2025/11/01 18:31 by faiglj