NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Statické vs. dynamické řetězce ve strukturách

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:22.10.2014 17:39

Ahoj, chci se zeptat jak se nejčastěji deklarují textové řetězce ve strukturách. Řekněme, že mám nyní takovouto strukturu (uzel spojového seznamu):

typedef struct osoba{
    int vek;
    char *jmeno;
    ADRESA adresa;
    struct osoba *p_dalsi;
} OSOBA;

Dříve jsem měl jméno jako char[50], což mi přišlo jako plýtvání pamětí. Bohužel se v kódu nyní objevily konstrukce jako:

scanf(" %100[^\n]s", buffer);
osoba->jmeno = (char *) malloc(sizeof(char) * (strlen(buffer) + 1));
strcpy(osoba->jmeno, buffer);

Což mi přijde docela šílené. Existuje nějaká lepší varianta, vypadají zdrojáky opravdu takhle nebo se ty stringy dělají spíše staticky?

Odpovědět
22.10.2014 17:39
New kid back on the block with a R.I.P
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na David Hartinger
Silvinios:22.10.2014 19:46

Obě varianty se v C běžně používají. Záleží, co od toho potřebuješ. Funkce malloc a strcpy se dají nahradit funkcí strdup, která ale není součástí ANSI C.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
+1
22.10.2014 19:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.