Řetězec je ve správném tvaru, pokud obsahuje slova oddělená jednou mezerou. Přitom první ani poslední znak není mezera. Příklady:
char ok[] = "toto je priklad spravneho vstupu";
char bad[] = " toto neni prilad \n spravneho vstupu ";
char empty=""; // prazdny retezec je ve spravnem tvaruNaprogramujte funkci s následující hlavičkou.
int delete_words(char src[], char words[])Oba argumenty jsou řetězce ve správném tvaru (ve funkci to není nutné
nijak testovat). Funkce smaže z řetězce src všechna slova,
která se nacházejí v řetězci words. Po provedení funkce
musí být řetězec src ve správném tvaru, do řetězce
words nesmí funkce zapisovat. Návratovou hodnotou funkce je
počet smazaných slov. Není povoleno používat knihovní funkce mimo těch z
stdio.h a assert.h.
Nápověda:
naprogramujte si pomocné funkce, např. pro kontrolu shody slov
vyskytujících se v src a words na daných
indexech.
znak v řetězci smažeme tak, že všechny znaky napravo od něj a nulu na konci posuneme o jedno políčko doleva.
dejte si pozor na přístup do pole s příliš velkým (či malým) indexem
netestujte následujícím způsobem:
delete_words("ahoj svete", "ahoj");Do řetězce "ahoj svete" totiž nelze zapisovat a program
spadne. Testovat je nutné následovně:
char src[] = "ahoj svete";
delete_words(src, "ahoj");k úkolu je přiložen soubor k otestování (pokud všechny testy projdou, je velká šance, že je úkol správně. Pořád ale můžete dělat chyby v přístupu do pole na neplatném indexu, to si musíte otestovat sami). Soubor lze stáhnout zde. Tento soubor není povinné používat.