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í
×
    včera 18:33 | Nová verze

    Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    včera 05:11 | Bezpečnostní upozornění

    Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.

    Ladislav Hagara | Komentářů: 11
    včera 02:22 | Nová verze

    Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.

    Ladislav Hagara | Komentářů: 2
    včera 01:22 | IT novinky

    Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.

    Ladislav Hagara | Komentářů: 0
    včera 00:11 | Nová verze

    Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinekpoznámkách k vydání.

    Fluttershy, yay! | Komentářů: 2
    25.7. 17:44 | Zajímavý článek Ladislav Hagara | Komentářů: 2
    25.7. 17:22 | Nová verze

    Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.

    Ladislav Hagara | Komentářů: 0
    25.7. 17:11 | Nová verze

    Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    25.7. 14:11 | IT novinky

    Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.

    Ladislav Hagara | Komentářů: 23
    25.7. 13:11 | IT novinky

    Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: Pole retezcu v Cecku

    26.9.2003 10:51 Tom
    Pole retezcu v Cecku
    Přečteno: 2107×
    Zdravim,

    da se prosim vytvorit nejakym zpusobem pole retezcu, pokud pri kompilaci nevim kolik prvku (radku) bude obsahovat ?

    klasicky se definuje pomoci

    napr char *p_text[4];

    p_text[0]= "prvni"; p_text[1]= "druhy"; atd.

    ale jak nadefinovat toto pole pokud nebudu znat pocet "radku" pole?

    Tom

    Odpovědi

    26.9.2003 12:07 Dušan Merta | skóre: 3 | Trnávka
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    Tohle by ti mohl pomoct:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define RADKY 5
    #define DELKA 256
    int main(void) {
      char **text;
      int i;
      
      /* Alokace pole. */
      text=(char **) malloc(RADKY*sizeof(char *));
      for (i=0; i<RADKY; i++)
        text[i]=(char *) malloc(DELKA*sizeof(char));
        
      /* Neco do nej dame. */
      strcpy(text[0], "prvni");
      strcpy(text[1], "druhy");
      
      /* Zkusime to vytisknout. */
      printf("%s", text[0]);
      
      /* Uvolneni pole. */
      for (i=0; i<RADKY; i++) free(text[i]);
      free(text);
      
      return(0);
    }
    
    Místo RADKY a DELKA můžeš mít libvolnou proměnnou typu int. Nezapomeň, že dvourozměrné pole musíš uvolňovat ve dvou krocích. Snad jsem to trefil, kdyžtak napiš mail.
    26.9.2003 12:13 Maud Lebowski
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    mas to asi spravne, ale on se ptal na to co delat kdyz neznas predem tu hodnotu RADKY. Zrejme bude treba to davat do tzv zasobniku, cili vytvorit strukturu s jednim ukazatelem na data a druhym na dalsi prvek:
    typedef struct {
      char *radek;
      struct *radek;
    } radek;
    
    (ted si nejsem jisty syntaxi) a pak postupne pridavat prvky.. no a zpetne prochazeni taky bude horor... cili jednoducha funkce v C na to neexistuje, moznosti jsou: naprogramovat si to sam, pouzit C++ (asi nejlepsi volba) nebo pouzit nejaky script jazyk
    26.9.2003 12:44 Dušan Merta | skóre: 3 | Trnávka
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    Pokud se pocet radku meni v prubehu behu programu, tak je opravdu nejlepsi zasobnik, ale pokud pocet radku neni znam v dobe komilace, ale pri behu se jednou urci, napriklad takto:
    printf("Zadej pocet radku: ");
    scanf("%d", &radky);
    
    tak pak muj priklad funguje, staci misto RADKY napsat radky:
    /* Alokace pole. */
      text=(char **) malloc(radky*sizeof(char *));
      for (i=0; i<radky; i++)
        text[i]=(char *) malloc(DELKA*sizeof(char));
    
    a je to jednodussi.
    BTW:
    typedef struct {
      char *retezec;
      radek *dalsi;
      radek *predchozi;
    } radek;
    
    Tohle resi docela dobre zpetne prochazeni a je to myslim dobre.
    26.9.2003 13:21 Maud Lebowski
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    jo lze to libovolne komplikovat napriklad hledanim ve vyvazenych b stromech..:-) jinak me ale jste napadla jedna vec kterou pozuivam kdyz nejde o moc dat a hodi se s nima pracovat jako s polem (typicky zpracovani dat ve fortranu), pak lze pouzit pole tak, ze se nejprve naplni 2 prvky, kdyz to nestaci tak se 2 prekkopiruji do 4 prvkoveho pole, kdyz ani to ne, tak se prekopiruje 4 prvky a vytvori 16 atd... velmi sikovne a rychle, bohuzel trochu zrout pameti..:-), ale v tomto pripade, kdy by se alokovalo jen 4byte pole ukazatelu na stringy je to urcite lepsi nez se drbat se zasobnikem
    Josef Kufner avatar 26.9.2003 13:43 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    typedef struct {
      char *retezec;
      radek *dalsi;
      radek *predchozi;
    } radek;
    
    
    by melo byt:
    
    
    typedef struct s_radek {
      char *retezec;
      struct s_radek *dalsi;
      struct s_radek *predchozi;
    } radek;
    
    Protoze radek neni tou dobou jeste deklarovan, ale struct s_radek jiz ano.
    Hello world ! Segmentation fault (core dumped)
    26.9.2003 14:06 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    Stejně je to vynalezání kola... (tedy, na něčem se člověk to C naučit musí, že...) Ale když chci obousměrně linkované seznamy a všechny možné funkce s nimi operující, vystačím si s #include <glib.h> (stejně tak, když chci jednosměrné seznamy, hashe, stromy, resizující se pole, etc.)
    26.9.2003 12:13 sam
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    pokial viem, v c-cku neexistuju datove typy, ktore by si sami regulovali velkost podla potreby. uz aj ten tvoj priklad je podla mna troska nepresny.

    ja by som to robil takto:
    char **p;
    p = (char **)malloc(pocet_riadkov * sizeof(char *));
    p[0] = (char *)malloc(velkost_retazca * sizeof(char));
    p[1] = (char *)malloc(velkost_retazca * sizeof(char));
    ...

    26.9.2003 13:00 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    Neexistují je silné slovo, nejsou přímo součástí jazyka, nicméně vše lze doprogramovat ;-) několik takových struktur je třeba v glib. gcc umožňuje int foo(int n) { char *p[n]; ... }, ale standardní C bohužel ne. Jinak je třeba použít malloc/alloca...
    28.9.2003 12:12 ApoC
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    A nebo v C++ pouzit vektor :o)
    28.9.2003 12:32 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    A bude se to kompilovat půl hodiny... ;-)
    CIJOML avatar 28.9.2003 16:58 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    A to vadi? Dulezita je konecna funkcnost
    28.9.2003 17:14 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    Jo, vadí. Velké projekty v C++ se [s gcc] kompilují tak dlouho, že dřív umřeš, než něco vyvineš, takže na žádnou konečnou funkčnost nedojde... (a to i s ccache, protože preprocesování se tím nezbavíš, a než se načte pár STL hlaviček, můžeš si s klidem skočit na oběd).
    28.9.2003 17:25 Beda
    Rozbalit Rozbalit vše Pole retezcu v Cecku
    ... to jsem tak jednou kompiloval s g++ orbit a par veci okolo. no a dopadlo to tak, ze pro nedostatek pameti a swapu (dohromady >1G) to neuneslo par regulernich daemonu a byly odporouceny na smrt => g++ uz se uz nejmenuje g++ a g++ nedela to co se obvykle od g++ ocekava. vzivote uz si nelajznu kompilovat cokoliv v g++ na tom serveru (je desne nenazrany) a kdybych to omezil pod paricnou mez, tak by to stejne slitlo pri kompilaci, takze je to na $#%^@#

    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.