Portál AbcLinuxu, 10. května 2025 11:04

Dotaz: Funkce pro filtrování seznamu souborů

Jardík avatar 21.1.2007 17:08 Jardík | skóre: 40 | blog: jarda_bloguje
Funkce pro filtrování seznamu souborů
Přečteno: 125×
Odpovědět | Admin

Už asi půl dne se snažím najít nějakou funkci na filtrování seznamu souborů v programovacím jazyku C, která je šířena pod BSD licencí. Představoval bych si to tak, že bych ji zavolal s názvem souboru a s filtrem (např. "*.txt;*.bmp;*.tar.*") a ona by mi vrátila pravdu, když soubor bude mít příponu ".txt" nebo ".bmp", nebo bude někde "mezi" ".tar.".

Přinejhorším bych si ji naprogramoval, ale proč nepoužít již hotovou (pokud je).

Věřím v jednoho Boha.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 21.1.2007 17:52 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Funkce pro filtrování seznamu souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napiš si stavový automat, který naplníš tabulkou přechodů a necháš skrz něj proběhnout ten kus textu. Když skončí ve správném stavu, tak jsi to našel, když skončí jinde, tak máš smůlu. Tuším, že se tomu říká lexikální analyzátor.

Jestli chceš, tak ti někde vystavím semestrálku, kde tohle je napsané a použité a má to i celkem hezké API. Sice to čte jen ze streamu (FILE *), ale úprava pro čtení z pole (char *) není nijak složitá. Když jsem testoval rychlost parsování, tak to bylo jen cca 10x pomalejší než cat (ale vypisovalo to hodně textu navíc).

Pak je ještě druhá možnost, která se jmenuje pcre.
Hello world ! Segmentation fault (core dumped)
Jardík avatar 21.1.2007 18:07 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Funkce pro filtrování seznamu souborů
Jestli chceš, tak ti někde vystavím semestrálku, kde tohle je napsané a použité a má to i celkem hezké API. Sice to čte jen ze streamu (FILE *), ale úprava pro čtení z pole (char *) není nijak složitá. Když jsem testoval rychlost parsování, tak to bylo jen cca 10x pomalejší než cat (ale vypisovalo to hodně textu navíc).
Chci :-) Děkuji.
Věřím v jednoho Boha.
Josef Kufner avatar 21.1.2007 19:31 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Funkce pro filtrování seznamu souborů
No tak teda jo. Tady to je. Zajímat tě budou soubory lexa.[ch] (stavový automat), lexa-table.[ch] (tabulka přechodů) a main.c (příklad použití). Pak budeš chtít funkci lexa_scan() udělat sestřičku, která bude přechroupávat pole.

Kdybyste náhodou někdo opravil výpočet množin First a Follow v gen-synta.php, vůbec bych se nezlobil ;-)
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.