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 17:55 | IT novinky

    Paramount nabízí za celý Warner Bros. Discovery 30 USD na akcii, tj. celkově o 18 miliard USD více než nabízí Netflix. V hotovosti.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | IT novinky

    Nájemný botnet Aisuru prolomil další "rekord". DDoS útok na Cloudflare dosáhl 29,7 Tbps. Aisuru je tvořený až čtyřmi miliony kompromitovaných zařízení.

    Ladislav Hagara | Komentářů: 0
    dnes 12:11 | Nová verze

    Iced, tj. multiplatformní GUI knihovna pro Rust, byla vydána ve verzi 0.14.0.

    Ladislav Hagara | Komentářů: 2
    dnes 05:22 | Komunita

    FEX, tj. open source emulátor umožňující spouštět aplikace pro x86 a x86_64 na architektuře ARM64, byl vydán ve verzi 2512. Před pár dny FEX oslavil sedmé narozeniny. Hlavní vývojář FEXu Ryan Houdek v oznámení poděkoval společnosti Valve za podporu. Pierre-Loup Griffais z Valve, jeden z architektů stojících za SteamOS a Steam Deckem, v rozhovoru pro The Verge potvrdil, že FEX je od svého vzniku sponzorován společností Valve.

    Ladislav Hagara | Komentářů: 0
    dnes 03:22 | Nová verze

    Byla vydána nová verze 2.24 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | IT novinky

    Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.

    Ladislav Hagara | Komentářů: 3
    6.12. 15:55 | Komunita

    O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.

    Ladislav Hagara | Komentářů: 0
    6.12. 15:44 | Komunita

    Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy

    … více »
    Ladislav Hagara | Komentářů: 28
    6.12. 15:22 | IT novinky

    Evropská komise obvinila síť 𝕏 z porušení unijních pravidel, konkrétně nařízení Evropské unie o digitálních službách (DSA). Vyměřila jí za to pokutu 120 milionů eur (2,9 miliardy Kč). Pokuta je podle názoru amerického ministra zahraničí útokem zahraničních vlád na americký lid. K pokutě se vyjádřil i americký viceprezident: „EU by měla podporovat svobodu projevu, a ne útočit na americké společnosti kvůli nesmyslům“.

    Ladislav Hagara | Komentářů: 26
    5.12. 17:11 | IT novinky

    Společnost Jolla spustila kampaň na podporu svého nového telefonu Jolla Phone se Sailfish OS. Dodání je plánováno na první polovinu příštího roku. Pokud bude alespoň 2 000 zájemců. Záloha na telefon je 99 €. Cena telefonu v rámci kampaně je 499 €.

    Ladislav Hagara | Komentářů: 30
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (48%)
     (19%)
     (17%)
     (22%)
     (15%)
     (24%)
     (16%)
     (18%)
    Celkem 442 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    Rozcestník

    Dotaz: porovnanie pola typu char

    26.2.2006 19:46 pyty
    porovnanie pola typu char
    Přečteno: 179×
    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.