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í
×
    včera 15:11 | IT novinky

    Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.

    Ladislav Hagara | Komentářů: 4
    30.4. 23:33 | Nová verze

    Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    30.4. 23:11 | Nová verze

    Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    30.4. 12:11 | IT novinky

    Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.

    Ladislav Hagara | Komentářů: 15
    30.4. 11:44 | Komunita

    Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.

    Ladislav Hagara | Komentářů: 0
    30.4. 01:11 | IT novinky

    Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.

    Ladislav Hagara | Komentářů: 57
    29.4. 23:44 | Bezpečnostní upozornění

    Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.

    Ladislav Hagara | Komentářů: 4
    29.4. 17:44 | Nová verze

    Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    29.4. 04:44 | Komunita

    Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.

    Ladislav Hagara | Komentářů: 7
    29.4. 03:55 | Nová verze

    VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (25%)
    Celkem 1469 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: porovnanie pola typu char

    26.2.2006 19:46 pyty
    porovnanie pola typu char
    Přečteno: 186×
    zdravim. rad by som vedel, ako sa vyriesi nasledujuca situacia:
    char retazec[3];
    cin << retazec[];
    cout << retazec[] << endl;
    if (retazec == "ahoj")
    {
        cout << "true";
    }
    else
    {
        cout << "false";
    }
    
    ked napisem ahoj, vrati mi to "ahoj" a "false". skusal som to upravit napr if (retazec == "ahoj\n") (Perl by to myslim zozral keby tam bolo eq :) apod. Ale nic som nevyriesil. Chapem ze to je ulozene v poli, takze by sa to mohlo dat vyriesit nejakym porovnanim z polom. Neide mi to ani ked si tu premennu nadefinujem v kode (teda bez cin). A co ma trapi najviac, kvoli comu som to vlastne robil je, mi to neporovna parameter predavany funkcii main z prikazoveho riadku. teda ked som to spravne pochopil, argv je vnorene pole a k tomu este ako ukzaovatel? ako to teda vyriesit? ukazovatele mi zatial akosi neidu a mam v tom truchu zmatok. pls pomozte niekto....

    Odpovědi

    Luboš Doležel (Doli) avatar 26.2.2006 19:55 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    1. Proč tam dáváte retazec[]?
    2. Na porovnání používejte strcmp(3)
    Luboš Doležel (Doli) avatar 26.2.2006 19:57 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    3. Hrůza - retazec je pole jen na 2 znaky. Výsledkem je buffer overrun.
    26.2.2006 20:22 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    Ad 2: když už se používá standardní C++ knihovna, tak proč jen napůl? Správné je použít typ std::string a pak je namístě i operátor ==.
    Josef Kufner avatar 27.2.2006 13:27 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    Tojo, ale je pak mensi sance, ze mu dojde, ze porovnava pointery a ne data...
    Hello world ! Segmentation fault (core dumped)
    26.2.2006 19:59 Boris
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    chyba je zde: retazec == "ahoj"
    porovnáváte totiž ne řetězce, ale proměnné typu char[], což je pointer na začátek řetězce. Je nutné použít buď fci strcmp deklarovanou v string.h: if (! strcmp (retazec, "ahoj")), nebo (vzhledem k tomu, že to je C++ kód) je daleko čistějším řešením typ std::string místo char[], kde to jde dělat intuitivně tak, jak jste napsal (tedy std::string retazec
    ...
    if (retazec == "ahoj")
    . Je myslím v #include <string>
    27.2.2006 12:18 pyty
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    ono to funguje, ale stale to nevyriesilo moj problem:
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
     if (!strcmp(argv[2],"ahoj"))
       {
         cout << "true\n";
       }
     else
       {
         cout << "false\n";
       }
    }
    
    bud mi to vrati false ked tam nedam nic, alebo segmention fault ked dam ako parameter ahoj alebo hocico ine... skusal som to aj ako
    int main(int argc, char *argv[])
    aky je medzi tym vlastne rozdiel ?
    27.2.2006 12:37 mike
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    co takhle argv[1] pro prvni pozicni parametr (nulty je jmeno binarky)
    27.2.2006 12:49 #Tom
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    Sice něco z níže uvedeného tu už někteří napsali, ale je dobré si shrnout všechny chyby:
    • Pokud je velikost paměti pro načtení řetězce omezená (char retezec[velikost]), je dobré použít takovou funkci, kterou lze rovněž omezit, tj. třeba fgets(retezec, sizeof(retezec), stdin). A nebo lze použít vhodnější string.
    • Samotné načtení se zapíše pomocí proudů takto:
      cin >> retezec;
      
      Místo cin může přijít jakýkoli jiný objekt vzešlý z istream, ale musí tam být šipečky od objektu, ne do něj.
    • Operátor porovnání == porovnává hodnoty, u standardních polí jsou to tedy nějaké ukazatele. V C++ jej lze přetížit, takže u objektů typu string nebo jednoho string a jednoho pole char * se porovnávají skutečně řetězce.
    • Parametry funkce main jsou záludné. V argc je počet parametrů, v argv je pole ukazatelů na řetězce s těmito parametry. Délka pole argv může být pokaždé různá, jediný prvek, který je přítomen vždy, je argv[0], tedy název programu. Pokud chceme pracovat s nějakým dalším, je potřeba se nejprve ujistit o jeho přítomnosti pomocí argc.
    • Pro ukončení řádku je lepší použít při práci s proudy spíše endl než "\n".
    27.2.2006 18:15 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    S tím posledním bodem bych si dovolil nesouhlasit, nebo aspoň ne tak obecně, jak jste to napsal. V tomto konkrétním případě je to celkem jedno, ale když to budete používat všude, výsledkem budou občas zoufale neefektivní aplikace. Viz C++ FAQ.
    27.2.2006 14:23 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: porovnanie pola typu char
    Bohužel, mám špatnou zprávu.

    Výrok "ukazovatele mi zatial akosi neidu" je ekvivalentní výroku "o C netuším vůbec nic."

    Jak se kdysi jeden člověk (paskma) vyjádřil, C je přenositelný asembler. Programování v C/asembleru vyžaduje znalost práce mikroprocesoru a jasnou představu o tom, co je uloženo v paměti a jak. Pro CPU neexistují žádné řetězce, existují jen byty v paměti a adresy těchto bytů.

    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.