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
jPodmí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 jUvnitř 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: 2Dejte 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.
Jak psát:
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
4/10