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 16:22 | IT novinky

    Amazon Web Services (AWS) oznámil (en) výstavbu Fastnetu – strategického transatlantického optického kabelu, který propojí americký stát Maryland s irským hrabstvím Cork a zajistí rychlý a spolehlivý přenos cloudových služeb a AI přes Atlantik. Fastnet je odpovědí na rostoucí poptávku po rychlém a spolehlivém přenosu dat mezi kontinenty. Systém byl navržen s ohledem na rostoucí provoz související s rozvojem umělé inteligence a

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 15:11 | IT novinky

    Evropská komise zkoumá možnosti, jak přinutit členské státy Evropské unie, aby ze svých telekomunikačních sítí postupně vyloučily čínské dodavatele Huawei a ZTE. Místopředsedkyně EK Henna Virkkunenová chce změnit doporučení nepoužívat rizikové dodavatele při budování mobilních sítí z roku 2020 v právně závazný požadavek.

    Ladislav Hagara | Komentářů: 6
    dnes 12:44 | Bezpečnostní upozornění

    sudo-rs, tj. sudo a su přepsané do programovacího jazyka Rust, již obsaženo v Ubuntu 25.10, bylo vydáno ve verzi 0.2.10. Opraveny jsou 2 bezpečnostní chyby.

    Ladislav Hagara | Komentářů: 1
    dnes 12:22 | IT novinky Ladislav Hagara | Komentářů: 0
    dnes 11:55 | Zajímavý software

    Společnost Avalonia UI oznámila, že pracuje na .NET MAUI pro Linux a webový prohlížeč. Vyzkoušet lze demo v prohlížeči. Když bude backend stabilní, bude vydán jako open source pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    včera 16:44 | Nová verze

    Byl vydán Mozilla Firefox 145.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Ukončena byla podpora 32bitového Firefoxu pro Linux. Přidána byla podpora Matrosky. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 145 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Lidé.cz (Wikipedie) jsou zpět jako sociální síť s "ambicí stát se místem pro kultivované debaty a bezpečným online prostředím".

    Ladislav Hagara | Komentářů: 45
    včera 10:33 | Nová verze

    Byla vydána nová verze 4.4 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | IT novinky

    ASUS má v nabídce komplexní řešení pro vývoj a nasazení AI: kompaktní stolní AI superpočítač ASUS Ascent GX10 poháněný superčipem NVIDIA GB10 Grace Blackwell a platformou NVIDIA DGX Spark. S operačním systémem NVIDIA DGX založeném na Ubuntu.

    Ladislav Hagara | Komentářů: 5
    včera 03:11 | Nová verze

    Desktopové prostredie Trinity Desktop vyšlo vo verzii R14.1.5. Je tu opravená chyba v tqt komponente spôsobujúca 100% vyťaženie cpu, dlaždice pre viac monitorov a nemenej dôležité su dizajnové zmeny v podobe ikon, pozadí atď. Pridaná bola podpora distribúcií Debian Trixie, Ubuntu Questing, RHEL 10 a OpenSUSE Leap 16.

    lukve | Komentářů: 8
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (47%)
     (18%)
     (17%)
     (22%)
     (15%)
     (22%)
     (15%)
     (16%)
    Celkem 344 hlasů
     Komentářů: 16, poslední dnes 18:21
    Rozcestník

    Dotaz: scanf a C

    20.5.2005 09:34 ssil | skóre: 15
    scanf a C
    Přečteno: 239×
    Při načítání z klávesnice jsem narazil na to, že pokud nejdříve načítám znak a pak číslo (scanf ("%c", &zn) a později scanf ("%d", &i)) je to bez problémů, ale pokud nejdřív načtu číslo, znak se už nenačte. To je skutečnost s níž je třeba počítat, nebo dělám něco blbě.

    Odpovědi

    20.5.2005 09:48 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    Podle toho, co je to za znak. Pokud je to třeba číslice, vůbec bych se nedivil ;-)
    20.5.2005 09:58 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    Ale jinak děláš něco blbě. Spusť
    scanf("%d", &i);
    scanf("%c", &c);
    printf("[%d][%c]\n", i, c);
    
    a napiš 12345x. Vypíše to [12345][x].
    20.5.2005 10:33 ssil | skóre: 15
    Rozbalit Rozbalit vše Re: scanf a C
    Tak tohle funguje, ale už třeba 12345 x nefunguje. Přitom %c by mělo zaručit načtení i bílých znaků takže jsem očekával výpis [12345][ x]. Taky pokus, kdy jsem mezi scanf dal třeba tisk načtených čísel, byl neúspěšný.
    20.5.2005 10:36 0
    Rozbalit Rozbalit vše Re: scanf a C
    %c nacte jeden znak nasledujici za cislem(tedy ve tvem pripade mezeru), zkus misto toho pouzit %*c%c, nebo %s do stringu.
    20.5.2005 11:17 ssil | skóre: 15
    Rozbalit Rozbalit vše Re: scanf a C
    S tím %*c%c mám zcela nesmyslné výsledky a s %s mi to hlásí neoprávněný přístup do paměti SIGSEGV. Nějaké nápady?
    20.5.2005 11:51 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: scanf a C
    Naalokovat paměť pro ten řetězec :-) Jestli to chceš mít i s whitespace, tak mě napadá jedině
    int i; char space[81], word[81];
    
    space[sizeof(space)-1] = 0;
    word[sizeof(space)-1] = 0;
    scanf("%d%80[ \n\t]%80s", &i, space, word);
    printf("[%d][%s%s]\n", i, space, word);
    
    Nebo napiš co chceš... %c načte pevný počet znaků.
    20.5.2005 11:57 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: scanf a C
    Blbnu, to nulování posledního bajtu tam není potřeba, to jsem zkoušel %c.
    20.5.2005 12:01 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    Nebo použít GNU libc a "%as", který alokuje dostatečně velký string sám...

    Ale stejně nechápu úvodní představu, že %c načte více než jeden znak.
    20.5.2005 11:57 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    The `%c' conversion is the simplest: it matches a fixed number of characters, always. The maximum field width says how many characters to read; if you don't specify the maximum, the default is 1. This conversion doesn't append a null character to the end of the text it reads. It also does not skip over initial whitespace characters.

    Takže žádné bílé znaky nenačítá. Použij "%1s", ten bílé znaky přeskakuje.

    Za zegfaulty a divné chování může to, že nečteš dokumentaci a nedáváš tomu správné argumenty.
    20.5.2005 11:58 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    s/nenačítá/nepřeskakuje/

    Načítá právě jakýkoli jeden znak, včetně bílého.
    20.5.2005 12:31 ssil | skóre: 15
    Rozbalit Rozbalit vše Re: scanf a C
    Tak jsem si ujasnil, že %c načítá jen jeden znak a že jde načíst číslo, načíst znak a pak to teprve vytisknout. Ale vrátím se k původní otázce. Načtu znak, vytisknu jej, načtu číslo, vytisknu jej. Ale načtu číslo, vytisknu jej, chci načíst znak, ale z následujícího tisku zjišťuju, že se nenačetl.
    20.5.2005 12:40 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: scanf a C
    Ne.
    scanf("%d", &i);
    printf("[%d]\n", i);
    scanf("%c", &c);
    printf("[%c]\n", c);
    
    Funguje úplně stejně jako první příklad.

    Nejspíš opět načítáš jiný znak, než si myslíš, že načítáš.
    20.5.2005 16:53 ssil | skóre: 15
    Rozbalit Rozbalit vše Re: scanf a C
    Bohužel, u mě to nefunguje. Napíšu číslo, dám enter a ono to napíše to číslo do hranatých závorek a už to na nic nečeká, vypíše to ty další hranaté závorky a navíc každou na nový řádek. Výsledek pak vypadá takto:
    45
    [45]
    [
    ]
    20.5.2005 17:04 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: scanf a C
    Ten enter je taky znak.

    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.