Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - Textové reťazce v jazyku C

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá 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

Avatar
Odpovedá 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;
}
Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedá 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.

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedá 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ď :)

Avatar
DarkCoder
Člen
Avatar
Odpovedá 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.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
Odpovedá 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é.

Odpovedať
"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ěď.

Editované
Avatar
Odpovedá 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.

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Švec
Člen
Avatar
Odpovedá 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 :)

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.

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 48.