abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 01:23 | Komunita

Phoronix spustil 2017 Linux Laptop Survey. Tento dotazník s otázkami zaměřenými na parametry ideálního notebooku s Linuxem lze vyplnit do 6. července.

Ladislav Hagara | Komentářů: 0
včera 22:44 | Nová verze

Po třech měsících vývoje od vydání verze 5.5.0 byla vydána verze 5.6.0 správce digitálních fotografií digiKam (digiKam Software Collection). Do digiKamu se mimo jiné vrátila HTML galerie a nástroj pro vytváření videa z fotografií. V Bugzille bylo uzavřeno více než 81 záznamů.

Ladislav Hagara | Komentářů: 0
včera 17:44 | Nová verze

Byla vydána verze 9.3 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab. Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 0
včera 13:53 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2017-06-21 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Z novinek lze zdůraznit IDE Thonny pro vývoj v programovacím jazyce Python a především offline verzi Scratche 2.0. Ten bylo dosud možné používat pouze online. Offline bylo možné používat pouze Scratch ve verzi 1.4. Z nového Scratchu lze ovládat také GPIO piny. Scratch 2.0 vyžaduje Flash.

Ladislav Hagara | Komentářů: 0
22.6. 14:24 | Nová verze

Opera 46, verze 46.0.2597.26, byla prohlášena za stabilní. Nejnovější verze tohoto webového prohlížeče je postavena na Chromiu 59. Z novinek lze zmínit například podporu APNG (Animated Portable Network Graphics). Přehled novinek pro vývojáře na blogu Dev.Opera. Oznámení o vydání zmiňuje také první televizní reklamu.

Ladislav Hagara | Komentářů: 0
22.6. 13:37 | IT novinky

I čtenáři AbcLinuxu před dvěma lety vyplňovali dotazníky věnované Retro ThinkPadu. Nyní bylo potvrzeno, že iniciativa Retro ThinkPad je stále naživu a Lenovo připravuje speciální edici ThinkPadu jako součást oslav jeho 25. výročí.

Ladislav Hagara | Komentářů: 16
22.6. 10:22 | Komunita

Bylo oznámeno, že frontend a runtime programovacího jazyka D bude začleněn do kolekce kompilátorů GCC (GNU Compiler Collection). Správcem byl ustanoven Iain Buclaw.

Ladislav Hagara | Komentářů: 7
21.6. 18:47 | IT novinky
Bulharská firma Olimex je známá jako výrobce kvalitních mini arm desek, u nichž se snaží být maximálně open source. Kromě velké otevřenosti taktéž zaručují dlouhodobou podporu výroby, což je vítáno ve firemním prostředí. Nyní firma ohlásila ESP32-GATEWAY, malou IoT desku s Wifi, Bluetooth, Ethernetem a 20 GPIO porty za 22EUR. Tato malá deska je ořezanou verzí ESP32-EVB.
Max | Komentářů: 21
21.6. 18:00 | Zajímavý článek

LinuxGizmos (v dubnu loňského roku přejmenován na HackerBoards a v lednu letošního roku zpět na LinuxGizmos) zveřejnil výsledky čtenářské ankety o nejoblíbenější jednodeskový počítač (SBC) v roce 2017. Letos se vybíralo z 98 jednodeskových počítačů (Tabulky Google). Nejoblíbenějšími jednodeskovými počítači v letošním roce jsou Raspberry Pi 3 Model B, Raspberry Pi Zero W a Raspberry Pi 2 Model B.

Ladislav Hagara | Komentářů: 0
21.6. 14:22 | Pozvánky

Ne-konference jOpenSpace 2017 se koná od 13. do 15. října 2017 v hotelu Farma u Pelhřimova. Registrace účastníků je nutná. Více informací na stránkách ne-konference.

Zdenek H. | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (31%)
 (1%)
 (9%)
 (44%)
 (9%)
Celkem 824 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    Hledání řetězce v řetězci (C vs. Python)

    13.4. 15:53 | Přečteno: 1051× | Ostatní | poslední úprava: 13.4. 16:15

    Jestliže chceme zjistit, zda je přítomen určitý řetězec v jiném řetězci, můžeme v jazyce C použít funkci strstr() ze standardní knihovny.
    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.

    Tohoto chování můžeme využít a napsat si vlastní funkci nstrstr(), která bude vracet počet výskytů řetězce v řetězci, jak ukazuje následující příklad.
    #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.        

    Hodnocení: 43 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    13.4. 22:07 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    V pythonu 2 je třeba nastavit kódování souboru na utf8, takže diakritikou to nebude.
    kozzi avatar 13.4. 22:56 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)

    nejak tam nevidim tu diakritiku

    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    14.4. 10:41 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    V řetězci. Python 2 hlásíval chybu, co si pamatuju, že není specifikované kódování. tady je nějaký PEP, kde je vidět, jak to má vypadat.
    14.4. 01:25 unicode
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Hodně neefektivní kód bych řekl.
    14.4. 01:28 unicode
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Navíc, neměla by ta funkce vracet size_t? Použít int na takovou věc může být celkem nebezpečné...
    14.4. 10:38 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    To by asi měla. Největší počet může být stejný jako počet znaků, což je stejné, jako maximální velikost objektu (-1 na ukončovací nulu), a k tomu je size_t určený. Já jsem to nějak nezkoumal, jinak bych mu vynadal taky :-)
    14.4. 10:38 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Samozřejmě pak musí použít "%zu" ve formátovacím řetězci místo "%d".
    14.4. 12:14 sad
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Tak díky za připomínky. A bylo by korektní použít pro size_t ve formátovacím řetězci "%lu", když bych se chtěl vyhnout C99.
    16.4. 21:45 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Bohužel by nebylo. Ve Windows např. sizeof(long) není stejné jako sizeof(size_t) v 64bit verzi. Předpoklady takových věcí jsou naprd. Vyhýbat se C99 nemá smysl. Kdyby se jednalo o C11, tak možná, ale C99 je tu skoro 20 let a většina programů na tvém systému napsaných v C buď C99 používá, nebo má závislost na něčem, co používá C99. Např. gtk/glib se C99 pořád brání (nebo alespoň bráníval), přitom je to kravina a bez C99 gtk nefunguje, protože X11 podporu C99 požaduje.
    Bedňa avatar 15.4. 22:50 Bedňa | skóre: 33 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    jinak bych mu vynadal taky :-)
    Hneď po prečitani som si hovoril, že tu píšeš pod facke nickom unicode :-)
    Pokecajte si s umelou stupiditou na http://www.kernelultras.org/
    16.4. 13:43 Kvakor
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    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" :-) ), ale v praxi by nejspíš bylo něco takového naprosto k ničemu. Přitom by úplně stačilo ze začátku si zjistit délku vyhledávaného řetězce a zapamatovávat si hodnotu vrácenou strstr(), pak by se vyhledávalo ne od s++, ale od <vráceno strstr()>+strlen(<délka vyhledeávaného řetězce>)+1.
    Jendа avatar 16.4. 18:18 Jendа | skóre: 73 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    IMHO jde o to, že podle implementace strstr buď nepoužívá optimalizovaný vyhledávací automat (KMP, Aho-Corasick…), nebo ho používá, ale při každém zavolání ho musí vytvořit znovu, protože neví, co hledalo a v jakém stavu posledně skončilo.

    Ale to strašně závisí na use-case. Pokud to děláš jednou za půl hodiny na normální řetězec dlouhý 1000 znaků, tak to přece není potřeba řešit. Pokud ti ale celá aplikace začne hnít na porovnávání stringů na vstupu, tak se to asi hodí. V tomto případě jsem poslal patch, který to zrychlil stodesetkrát (!) :-D
    16.4. 11:59 sarimak
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    ad Python: Pritomnost (tedy ne pocet vyskytu nebo index zacatku) substringu lze zjistit jednoduseji - pomoci "substring" in original_string - napr. "kolo" in "okolo" vrati True.
    Bystroushaak avatar 16.4. 18:44 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Nejen jde, ale běžně se to ani nijak jinak nedělá a použití ukázky ke kontrole přítomnosti by bylo považováno za špatné a narazit na ně někde v práci, tak to buď nenechám projít code review, nebo bez milosti zrefactoruju.

    Osobně jsem vůbec nepochopil smysl těhle blogů, kde se probírá něco úplně základního, co je v každém tutoriálu, navíc stylem, který nejen že nic nepřidává, ale často působí zmateným dojmem, asi jako kdyby se to zrovna včera naučil. Třeba tenhle blog:
    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ězci
    Což 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?
    16.4. 19:05 hypvofxy | skóre: 5 | blog: hypvofxy
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    +1. Mozna to autor vnima spis jako poradnu, kdy svymi slovy zkusi neco vysvetlit a ceka, az ho ostatni v diskuzi opravi. Na druhou stranu nevim, jak moc je to uzitecne pro kteroukoliv ze zucastnenych stran.

    Osobne nerad radim zacatecnikum, protoze bud jim vedome poskytnu zjednodusenou a neuplnou odpoved, nebo odpoved natolik slozitou, ze ji nedokazou pochopit. Sice se tim mozna neco noveho nauci, ale to uceni je pak nesystematicke.

    Vzdycky rikam, ze prace programatora spociva v neustalem reseni problemu. Naucit se programovat je ten prvni problem. Lidi, co na to maji predpoklady, si tu cestu proste najdou. Pak jsou lidi, co potrebujou vest krucek za kruckem a pokud se jim takove asistence dostane, do nejake miry se to nauci. Otazkou je, jestli je pak vlastne bude bavit to programovani delat, kdyz budou muset hodiny v kuse sedet jen s monitorem a svymi myslenkami.

    Kazdopadne, co se tyka vymeny rad, zkusenosti a inspirace, je vzdycky idealni najit si nekoho, kdo je ve studiu podobne daleko a resit to s nim.
    16.4. 20:19 sad
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Programování v C mě docela baví, tak si občas něco napíši a dám to sem. Programovat zatím moc neumím, tak jsem rád, když mě skuteční programátoři upozorní na chyby a špatné postupy. Samozřejmě bych byl rád kdyby se kvalita mých blogů zvyšovala, a ne naopak.

    Třeba tenhle zápisek zase nebyl tak špatný, ne?
    Funkce strtol a nanosleep (jazyk C)

    Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.
    Bystroushaak avatar 16.4. 21:07 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    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.
    16.4. 21:09 hypvofxy | skóre: 5 | blog: hypvofxy
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    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.
    Bedňa avatar 16.4. 21:15 Bedňa | skóre: 33 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Robíš to dobre, občas keď niekto bude potrebovať pomoc, tak si to tu nájde aj s komentármi. Určite neprestávaj.
    Pokecajte si s umelou stupiditou na http://www.kernelultras.org/
    20.4. 14:46 pedro
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Pocet nebo index?

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.