Portál AbcLinuxu, 30. dubna 2025 23:12
char *strstr(const char *prohledavany_řetezec, const char *hledany_retezec)Funkce vrací pointer na první výskyt hledaného řetězce v prohledávaném řetězci, pokud se hledaný řetězec v prohledávaném řetězci nenachází, funkce vrací NULL.
#include <stdio.h> #include <string.h> int nstrstr(char *s, char *find); int main() { char str[] = "UBUNTU, KUBUNTU, XUBUNTU A LUBUNTU!"; char substr[] = "UBUNTU"; printf("%s je v retezci %dkrat.\n", substr, nstrstr(str, substr)); return 0; } int nstrstr(char *s, char *find) { int n = 0; while ((s = strstr(s, find)) != NULL) { s++; n++; } return n; }To samé v Pythonu 3. (V Pythonu 2 nebude fungovat kvůli diakritice.)
str1 = "UBUNTU, KUBUNTU, XUBUNTU A LUBUNTU!" strsub = "UBUNTU" n = str1.count(strsub) print("{0} je v řetězci {1}krát.".format(strsub, n))Céčkové funkci strstr() odpovídá v Pythonu metoda find(), která vrací číselnou pozici (index) na první výskyt, anebo -1, pokud není řetězec nalezen. V příkladě s UBUNTU by vrátila nulu.
Tiskni
Sdílej:
nejak tam nevidim tu diakritiku
jinak bych mu vynadal takyHneď po prečitani som si hovoril, že tu píšeš pod facke nickom unicode
Hodně neefektivní kód bych řekl.No, teoreticky by to mělo smyls, kdyby se počítaly překývající řetězce (typu Hledej "nan" v "banananana"
strstr()
, pak by se vyhledávalo ne od s++
, ale od <vráceno strstr()>+strlen(<délka vyhledeávaného řetězce>)+1
.
substring" in original_string
- napr. "kolo" in "okolo"
vrati True
.
Hledání řetězce v řetězci (C vs. Python)
jestliže chceme zjistit, zda je přítomen určitý řetězec v jiném řetězciCož působí dojmem, že chce kontrolovat existenci podřetězce, ale pak přejde na počítání počtu výskytů a chytne se o toho i v pythonní verzi. Pokud bych byl začátečník, měl bych v tom po přečtení blogu tak akorát větší bordel, než jsem měl předtím. Jako nezačátečník musím konstatovat jen že jsem se z toho nic nenaučil, ani nedozvěděl a třeba Jendův příspěvek v diskuzi pro mě byl hodnotnější, než celý blog. Autora od psaní nechci odrazovat, ale imho by se měl víc zamyslet a dát to před publikací přečíst někomu jinému, kdo mu k tomu řekne nestranný názor. Taky by si imho měl ujasnit smysl a důvod, proč to publikuje tak jak to publikuje. Je cílem jen vyvolat diskuzi, nebo i někoho něco naučit, nebo jen ukázat, že se něco nového naučil, nebo to tahá náhodně z klobouku?
Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.Jak jsem psal, nechci tě odrazovat. Viz ten poslední odstavec. Tu kritiku jsem myslel konstruktivně, ne jako hejt.
Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.Ne. Je to tvuj blog, pis, co uznas za vhodne. My to maximalne nebudeme cist, nebo na to reagovat.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.