{{indexmenu_n>6}}
====== 6 - Textové řetězce ======
* [[courses:b0b36prp:internal:tutorialinstruction:05|pro vyučující]]
===== Cíle cvičení =====
- Textové řetězce.
==== Materiály ====
* [[https://en.wikipedia.org/wiki/ASCII|ASCII tabulka]]
* Délka textového řetězce: [[https://en.cppreference.com/w/cpp/string/byte/strlen|strlen]]
* Porovnání řetězců: [[https://en.cppreference.com/w/c/string/byte/strcmp|strcmp]], [[https://en.cppreference.com/w/c/string/byte/strncmp|strncmp]]
===== 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 strlen, strcmp a strncmp.
=== cat ===
* Naprogramujte zjednodušenou verzi programu ''cat''. Načtěte vstup ze stdin a zase ho vypište na výstup (stdout).
echo "Hello world" | cat
Hello world
* Upravte program tak, aby vypsal vstup až za první mezerou:
echo "Hello world" | cat2
world
* 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'').
echo "Hello world and hello again " | words
Hello
world
and
hello
again
* Nyní zkuste totéž, ale za každé slovo vypište i jeho délku a slova 'and' a 'or' nejak označte.
echo "Hello world and hello again " | words-len
Hello 5
world 5
and 3 <--
hello 5
again 5
=== tr ===
* Načtěte vstup a vypište ho s malými písmeny přepsanými na velké a naopak
echo "Hello world" | cap
=====
hELLO WORLD
* Nyní zkuste zjednodušenou verzi programu ''tr''. Program bude mít zadány dva argumenty na příkazové řádce, které budou sloužit jako předpis pro překlad znaků viz. následující příklad:
echo "Hello world" | tr 'Hl' 'Xk'
Xekko workd
echo "Hello world" | tr 'dweji' '01234'
H2llo 1orl0
* Zkuste si pospojovat dnešní programy. Např.:
echo "Hello world and hello again " | words | cap
hELLO
WORLD
AND
HELLO
AGAIN
=== Feedback ===
Pro cvičení Jakuba Dupáka: [[https://jakubdupak.com/prp-feedback/]]