Naprogramujte vlastní verze knihovních funkcí strlen
a strcmp
(string.h
), které nepoužijí indexů,
ale pouze pointerové aritmetiky a dereference.
Vytvořte strukturu s několika položkami a aspoň jednu její proměnnou. Vypište informace o layoutu této proměnné: pro každou položku vypište její adresu a velikost. Vypište i adresu a velikost samotné proměnné.
Naprogramujte funkci pro výpočet průměru a mediánu pole čísel (např. float). Jednu z hodnot vraťte pomocí argumentu předaného odkazem. (Funkce může změnit pořadí prvků v poli.)
Napište funkci swap_int
, která prohodí hodnoty dvou
proměnných typu int
.
Napište funkci, která v poli řetězců najde znak, který se vyskytuje v nejvíce řetězcích v tomto poli.
Uvažujme následující typ pro řetězec
typedef struct
{
char *data;
size_t len;
} String;
Naprogramujte funkci void print_string(String s)
pro
tisk.
Naprogramujte funkci
string get_prefix(char *src, char delimiter, char **rest)
,
která vrátí část řetězce src
od jeho začátku do prvního
výskytu znaku delimiter
. Současně odkazem pomocí
rest
vrátí adresu prvního znaku, který se nachází za prvním
výskytem znaku delimiter
. Pokud src
delimiter
neobsahuje, vrátí pomocí rest
0 a návratová hodnota funkce
odpovídá celému řetězci. V následující ukázce program vypíše jednotlivé
řádky řetěce ret
očíslované.
char *rem = ret;
int line_number = 1;
while (rem)
{
= get_prefix(rem, '\n', &rem);
String line ("%i ", line_number);
printf(line);
print_string}