Ahoj,
nějak se mi nedaří v C rozumně vyřešit problém postupného zpracování řetězce, a budu rád za pomoc.
Mějme řetězec, který chci např. nejdříve převést na upper case, a pak transliterovat, a pak třeba převést na html-friendly verzi. V bashi by to vypadalo pomocí rour nějak takto (zjednodušeně)echo $rezetec | to_upper_case | translit | 2html
Jak to udělat rozumně v C? Prostě funkcechar *transfer (char *string) {
return 2html ( translit ( upper_case (string)));
}
Jak ale vyřešit tu složenou funkci 2html ( translit ( upper_case (string)))? Důležité je, že výsledek může být větší než vstupní string. Zkoušel jsem to přes pointery, ale jakmile si každá funkce vytvoří svůj vlastní pointer, těžko se pak honí zpátky na free(). Pokud to řeším klasicky přes input_string, output_string, vzniká strašně nepřehledná směs, ve které je ještě nutno přesouvat řetězce sem tamreturn html ( translit ( upper_case (in, out, max_length1), out2, max_length2), out3, max_length3);
Díky za případné tipy nebo třeba odkazy na podobný zdrojový kód.