Procházení řetězce

Když chcete něco udělat s každým znakem řetězce, třeba spočítat určitá písmena nebo najít číslici, projděte ho cyklem, stejně jako pole čísel. Je tu jen jeden rozdíl: u řetězce nemusíte znát jeho délku. Cyklus se může zastavit u nulového znaku:

char slovo[] = "Ahoj";
for (int i = 0; slovo[i] != '\0'; i++) {
    printf("%c\n", slovo[i]);
}

Program vypíše:

A
h
o
j

Podmínku čtěte jako „dokud znak na indexu i není konec textu“. V prvním průchodu cyklem je i rovno 0 a slovo[0] je 'A'. Po čtvrtém průchodu je i rovno 4, slovo[4] je '\0' a cyklus skončí.

Cyklus můžete napsat i pomocí strlen, jako cyklus přes pole s počtem prvků. Obojí je správně:

char slovo[] = "Ahoj";
int delka = strlen(slovo);
for (int i = 0; i < delka; i++) {
    printf("%c ", slovo[i]);
}
printf("\n");

Program vypíše:

A h o j

Uvnitř cyklu je slovo[i] jeden znak, takže ho můžete otestovat podmínkou if. Tento cyklus spočítá písmena a ve slově „kakao“ stejným postupem, jakým jste v lekci o polích počítali prvky:

char slovo[] = "kakao";
int pocet = 0;
for (int i = 0; slovo[i] != '\0'; i++) {
    if (slovo[i] == 'a') {
        pocet++;
    }
}
printf("Počet písmen a: %d\n", pocet);

Program vypíše:

Počet písmen a: 2

Dejte pozor na dvě věci. Znak porovnávejte v jednoduchých uvozovkách: s podmínkou slovo[i] == "a" se program tady sice přeloží, ale podmínka nebude splněná nikdy a počet zůstane 0. A velká a malá písmena jsou různé znaky: 'A' == 'a' neplatí, takže cyklus, který počítá 'a', v textu "Ahoj" nic nenajde.

Pokyny

Projděte řetězec slovo cyklem for a vypište jeho znaky na jeden řádek, za každým mezeru: r o d o d e n d r o n. Řádek ukončete až za cyklem pomocí printf("\n");.

Pod to spočítejte, kolikrát je ve slově písmeno o, a vypište Počet písmen o: 3.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

4/10