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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

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

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 1
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 5
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 49
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 18
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 777 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Pole retezcu v Cecku

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