abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

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

    Byla vydána nová stabilní verze 3.5 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). Přehled novinek také na YouTube. Nově lze využívat cloud (audio.com). Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | Zajímavý článek

    50 let operačního systému CP/M, článek na webu Computer History Museum věnovaný operačnímu systému CP/M. Gary Kildall z Digital Research jej vytvořil v roce 1974.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Pozvánky

    Byl zveřejněn program a spuštěna registrace na letošní konferenci Prague PostgreSQL Developer Day, která se koná 4. a 5. června. Na programu jsou 4 workshopy a 8 přednášek na různá témata o PostgreSQL, od konfigurace a zálohování po využití pro AI a vector search. Stejně jako v předchozích letech se konference koná v prostorách FIT ČVUT v Praze.

    TomasVondra | Komentářů: 0
    včera 03:00 | IT novinky

    Po 48 letech Zilog končí s výrobou 8bitového mikroprocesoru Zilog Z80 (Z84C00 Z80). Mikroprocesor byl uveden na trh v červenci 1976. Poslední objednávky jsou přijímány do 14. června [pdf].

    Ladislav Hagara | Komentářů: 6
    včera 02:00 | IT novinky

    Ještě letos vyjde Kingdom Come: Deliverance II (YouTube), pokračování počítačové hry Kingdom Come: Deliverance (Wikipedie, ProtonDB Gold).

    Ladislav Hagara | Komentářů: 3
    21.4. 19:11 | Komunita

    Thunderbird 128, příští major verze naplánovaná na červenec, přijde s nativní podporou Exchange napsanou v Rustu.

    Ladislav Hagara | Komentářů: 19
    21.4. 04:44 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Novým vedoucím je Andreas Tille.

    Ladislav Hagara | Komentářů: 7
    21.4. 00:11 | Nová verze

    Po osmi měsících vývoje byla vydána nová verze 0.12.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 268 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    20.4. 23:55 | Pozvánky

    Poslední měsíc byl plný zajímavých akcí, o kterých Vám bastlíři z projektu MacGyver mohou povědět, protože se na ně sami vydali. Kde všude byli, ptáte se? Objevili se na Installfestu, Arduino Day, Hackaday Europe a tajném srazu bastlířů z Twitteru. A z každé akce pro vás mají zajímavé poznatky.

    … více »
    bkralik | Komentářů: 1
    KDE Plasma 6
     (71%)
     (10%)
     (2%)
     (17%)
    Celkem 670 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Čtení z náhodného místa v souboru

    14.1.2010 23:25 Okallasch | skóre: 1
    Čtení z náhodného místa v souboru
    Přečteno: 266×
    Zdravim Céčkaří. Potřeboval bych radu... //Předem se omlouvám jestli řešim už vyřešené téma... Píši program k maturitě a jmenuje se Kalendář a diář v jednom.

    Měl by pracovat takto uživately se po spuštení objeví hlavní menu kde si může vybrat ze 4 možností: 1-Kalendář 2-Diář 3-Nastavení 4-Konec

    Zatim mám program napsaný ve fázi takovéto:

    Pokud uživatel vybere první možnost otevře se externí soubor s názvem kalendar.txt a vyplivne na obrazovku celý svůj obsah... což znamená datumy+svátky od 1.1. až do 31.12. Program ještě těsně po spuštení zjistí aktuální datum a čas a vypíše ho nad hlavní menu... A já bych potřeboval aby aktuální datum použil k nalezení místa v tom souboru kalendar.txt a od toho místa vytiskly na obrazovku aktuální den + 7 dalších dnů a tam se poté zastavil. Prozatim mám napsaný cyklus pro čtení znaků jeden za druhym až do konce souboru tedy EOF. Potřebuju poradit od vás zkušených jak tento cyklus upravit aby se dělo to co potřebuji... Zkoušel jsem nějaké pokusy, ale marně zkoušel jsem i funkce fseek, ale s tou moc ještě neumim :-(... Tak do hoďky budu na svém linuxu a hodim sem zdroják... Zatim s pozdravem Ondřej Kallasch

    Odpovědi

    15.1.2010 00:12 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru
    Pokud jde o svátky, tak bys třeba mohl mít soubor, kde by na každém řádku byl jeden svátek (366 řádků). Pořadí aktuálního dne v roce spočítáš lehce (pozor na přestupný rok), najdeš si správný řádek, přečteš jich dalších sedm…

    Kromě těch svátků by ale bylo rozumnější kalendář generovat on-the-fly. Neměl jsi doufám v úmyslu mít v nějakém souboru hotový, naformátovaný kalendář včetně dat („datumů“)? Ono ne že by to nefungovalo, ale až bys chtěl nějak změnit třeba formát výstupu… práce s takovými daty by byla horší než škrábání levou nohou za pravým uchem :-)
    15.1.2010 00:54 Okallasch | skóre: 1
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru
    Příloha:
    Ano měl jsem to v plánu mít naformátovaný soubor s celým kalendářem... Sice se mi nepodařilo se ted z neznameho duvodu pripojit s fedorou k netu ale nastesti jsem pretahl zdrojak na flasku takze to postnu pres okna.

    Tady to je jak jsem sliboval, nezhrozte se upravy a stavby programu zatim to nemam vubec srovnane a je to jen ranná verze, ale budu rád za každý návrh na zjednodušení nebo vylepšení programu.. tak uplouduju samotný program.
    15.1.2010 00:56 Okallasch | skóre: 1
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru
    Příloha:
    A zde ještě přikládám soubor kalendar.txt
    15.1.2010 02:12 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru

    1. Jak už tu padlo, mít předformátovaný kalendář je nesmysl. Kdyby nic jiného, fungovalo by to jen pro jeden konkrétní rok. Pokud se vám nechce počítat den v týdnu, udělá to za vás funkce localtime(), kterou stejně používáte.

    2. Funkce fseek() by měla smysl pouze v případě, že by bylo možné odvodit (bytovou) pozici v souboru z data, tedy např. pokud by jednotlivé záznamy měly pevnou délku. Pro vás bude užitečnější spíš čtení po řádcích pomocí fgets(), ale to záleží na formátu toho pomocného souboru.

    Jinak přeji hodně štěstí u maturity. Vzhledem k úrovni znalostí dvou maturitních předmětů, kterou jste předvedl ve svém dotazu, ho asi budete potřebovat.

    15.1.2010 02:48 Okallasch | skóre: 1
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru
    děkuji, zřejmě budu... naštestí maturita se skládá pouze ze samotné práce + obhajoba, takže mě nemůže nic překvapit, protože se mě budou ptát jen na věci ohledně práce... No je pravda, že nyní lituju výběrem tématu...
    15.1.2010 03:14 Radovan
    Rozbalit Rozbalit vše Re: Čtení z náhodného místa v souboru
    A nebude jednodušší načíst celé řádky, které mohou mít různou délku? ;-)

    char *fgets(char *s, int size, FILE *stream);

    Podrobnosti viz man char a ukázka tady. Pro fseek() bys potřeboval vědět kde jednotlivé dny začínají, to by znamenalo mít všechny položky doplněné mezerami na stejnou délku a pozici vypočítat, nebo mít tabulku s indexy, třeba na začátku toho souboru se svátky.

    Prostě si udělej pole 12*31*max_délka_řádku a do něj načti všechny svátky ze souboru najednou, budeš mít 372 řádky, těch pár bytů navíc už tě nezabije. Pak si v programu musíš jen ohlídat aby v těch sedmi dnech nezobrazoval třeba 31. února a aby na přelomu roku skočil do ledna a ne do dalšího měsíce, tam bych použil pole s délkami měsíců int delka[12]={31,28,31,30.....31}; - únor se v přestupném roce změní na 29. Jen pozor na to že indexy měsíců i dnů jsou o 1 nižší než hodnota, jinak bys musel mít 13*32*délka! Spočítat den v týdnu už nebude problém, abys ho vypsal k datu.

    Jestli do toho diáře budeš chtít zapisovat poznámky a ukládat je na disk, tak si to program může stejným způsobem uložit do podobného souboru, v nejhorším případě i do toho samého za kalendář.

    Založit nové vláknoNahoru

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

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