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 22:11 | Pozvánky

    Dětem začala škola a nedobrovolně se tak musí vzdělávat. Avšak pro dospělé, kteří se chtějí vzdělávat nebo naopak se o vědomosti podělit, je tu Virtuální Bastlírna - jako každý měsíc si můžete online a zdarma nezávazně popovídat o vědě a technice nejen s bastlíři, ale i s vývojáři, vědci nebo profesory. A čemu se strahováci budou věnovat? Blíží se KiCAD 11 s nespočtem novinek, z nichž zde musí zmínit alespoň možnost kótování a závislostí z

    … více »
    bkralik | Komentářů: 0
    včera 19:33 | Komunita

    Asahi Linux, tj. Linux pro Apple Silicon, oficiálně podporuje čipy M3 (M3, M3 Pro a M3 Max).

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

    Server SiFive BigSky SF-2U870 2U je založený na jádře SiFive P870-D, zatím je naintegrovaných 32 jader 256 GB RAM 2 GHz, škálovat lze do 256 jader na čip. O něco podrobnější popis serveru v článku SiFive BigSky Ships the First RISC-V Server. Is the GPU Head Node the Prize? na futurumgroup.com. Asi ani tento čip nebude na úrovni nejlepších 64-bit ARMů a AMD Zenů, ale splňuje RVA23 specifikaci a je podporovaný Ubuntu 26.04 LTS a RHEL 10. V článku je

    … více »
    Pavel Píša | Komentářů: 1
    včera 00:11 | IT novinky

    Na YouTube lze zhlédnout nový celovečerní dokumentární film The Story of VS Code | Official Documentary věnovaný Visual Studio Code.

    Ladislav Hagara | Komentářů: 14
    4.9. 23:49 | Zajímavý článek

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 1
    4.9. 17:33 | Zajímavý článek

    Bylo vydáno nové číslo hackerského magazínu tmp.0ut: Volume 5.

    Ladislav Hagara | Komentářů: 0
    4.9. 01:44 | Nová verze

    Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.

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

    Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    3.9. 16:55 | IT novinky

    NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (4%)
     (20%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2593 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Pole retezcu v Cecku

    26.9.2003 10:51 Tom
    Pole retezcu v Cecku
    Přečteno: 2217×
    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.