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 – Lekce 8 - Textové řetězce v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Libor Šimo (libcosenior)
Lukáš Horňák:27.1.2016 13:11

nazdar chlapi programátoři jak jde programování já jsem úplně blbý neumím zjistit ani délku řetězce tak mně prosím poradte, vy ste asi dobří když tu píšete takové moudra tak na vás spoléhám s pozdravem phpmaestro

 
Odpovědět
27.1.2016 13:11
Avatar
Odpovídá na Lukáš Horňák
Libor Šimo (libcosenior):27.1.2016 14:06
#include <stdio.h>
#include <string.h> // použitie strlen()

int main(void)
{
    int dlzka = 0;
    char *retazec = "Nazdar chlapi programatori jak jde programovani?";

    printf("Dlzka retazca je %d.\n", strlen(retazec)); // pouzitie strlen()

    while(*retazec++ != '\0') { // dalsi jeden z moznych sposobov
        dlzka++;
    }
    printf("Dlzka retazca je %d.\n", dlzka);

    return 0;
}
Odpovědět
27.1.2016 14:06
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Lukáš Horňák
Libor Šimo (libcosenior):27.1.2016 14:08

Dôležité je uvedomiť si, že reťazec je jednorozmerné pole znakov, ukončené znakom '\0'.
Veľkosť poľa by si už mohol vedieľ zistiť aj sám.

Odpovědět
27.1.2016 14:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Rastislav Mikláš:8.1.2017 21:48

Ahoj, má ta hviezdička v názve *reťazec nejaký význam? Vďaka za odpoveď :)

 
Odpovědět
8.1.2017 21:48
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Rastislav Mikláš
DarkCoder:9.1.2017 0:32

Samozřejmě. Pokud by tam nebyla, pak by proměnná retazec byla deklarována jako proměnná schopna pojmout jeden znak a současná inicializace této proměnné by byla chybná. To co Libor vytvořil je řetězcová konstanta, která je uložena v tabulce řetězců programu, na kterou překladač vytváří ukazatel. Tedy proměnná retazec je zde inicializována adresou řetězce.

Odpovědět
9.1.2017 0:32
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Rastislav Mikláš
DarkCoder:9.1.2017 0:42
while(*retazec++ != '\0') { // dalsi jeden z moznych sposobov
        dlzka++;
    }

Zde má * význam jako operátor dereference ukazatelové proměnné, bere se hodnota proměnné.

Odpovědět
9.1.2017 0:42
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
David Švec
Člen
Avatar
David Švec:18.7.2017 14:49

Zdravím všechny,
mám 2. dotazy :)
char *p = strchr(text, 'X');

1. proč je u toho char p ta hvězdička?
nikde jsem to nenašel, a vysvětlení, které někdo napsal do komentářů jsem nepochopil.. mohl by mi to někdo vysvětlit nějak po lopatě? :D

2. scanf("%50s", jmeno);
proč je tam 50, když velikost pole je 51? :)

Děkuji za odpověď.

Editováno 18.7.2017 14:52
 
Odpovědět
18.7.2017 14:49
Avatar
Odpovídá na David Švec
Libor Šimo (libcosenior):18.7.2017 15:13
  • ukazuje, ze ide o pointer.

50 preto, ze retazec je ukonceny znakom '\0' a to je ten 51.

Odpovědět
18.7.2017 15:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Švec
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Švec:18.7.2017 15:15

Co to znamená pointer? To je někde až v dalších lekcích? Já jsem totiž začátečník :)

 
Odpovědět
18.7.2017 15:15
Avatar
Libor Šimo (libcosenior):18.7.2017 15:17

Pointer je adresa v pamati kde zacina dany retazec. Mallo by to byt v dalsich lekciach.

Odpovědět
18.7.2017 15:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 10 zpráv z 48.