headerphoto

Řetězec - standardní funkce

V předchozí kapitole (Řetězec) je popsána základní práce s řetězci: deklarace, načtení z klávesnice, výpis na obrazovku. Pro zopakování uvedeme příkazy pro načtení a výpis řetězce.

char jmeno[50]; //deklarace retezce o max. delce 50 znaku
printf("Napiste svoje jmeno: ") ;
gets(jmeno) ; //ulozeni zadaneho textu z klavesnice do promenne jmeno
printf("Dobry den, %s\n", jmeno);

Při střídavém zadávání textů, znaků a čísel z klávesnice se nám často stane, že na požadovanou hodnotu program nečeká a její zadání "přeskočí". Musíme potom vhodně použít funkci fflush(stdin) pro vyprázdnění vstupního zásobníku. Dále se budeme věnovat funkcím a dalším nástrojům, které nám umožní řetězec zpracovat.

Standardní funkce pro práci s řetězci - string.h

Práci s řetězci v jazyce C nám ulehčují funkce ze standardní knihovny string.h. V následující části popíšeme alespoň některé z nich.

strlen()

Už podle názvu (string length) je zřejmé, že nám umožní zjistit délku řetězce. Ta se udává jako počet znaků, které jsou v řetězci. Koncový nulový znak se do délky nezapočítává.

//budeme pracovat s řetězcem jmeno z předchozího kódu
int delka;
delka = strlen(jmeno) ;
printf("Tvoje jmeno obsahuje %d znaku\n", delka);

strcpy()

Tato funkce umí nakopírovat jeden řetězec do druhého(string copy). Jednoduše přepíše první řetězec druhým. Funkce je velmi užitečná, protože pole (a to je i řetězec) nemůžeme nastavit najednou, jenom po jednotlivých prvcích (znacích). Funkce tak pro řetězce nahrazuje klasické přiřazení.

//budeme pracovat s řetězcem jmeno z předchozího kódu
//nemuzeme napsat jmeno="Alois"; proto pouzijeme strcpy()
strcpy(jmeno, "Alois") ; //vloží do promenne jmeno dany text, prepise puvodni jmeno
printf("Tvoje jmeno je %s\n", jmeno);

Podobně funguje i funkce strncpy(), ve které je kopírování omezeno počtem znaků.

strcmp()

Tato funkce porovná dva řetězce(string compare). Řetězce se vždy porovnávají abecedně (podle ASCII kódů znaků), záleží tedy i na velikosti písmen (malé/velké). Funkce má 2 parametry, jsou to 2 řetězce pro porovnání. Funkce vrací výsledek porovnání:
     0 - v případě, že se řetězce rovnají (abecedně)
     záporné číslo - když první je menší než druhý (abecedně)
     kladné číslo - když první je větší než druhý (abecedně)

char heslo[30] = "SPSE", vstup[30];
printf("Napiste vstupni heslo: ") ;
gets(vstup) ;
if(strcmp(heslo, vstup) == 0)
{
    printf("Heslo je OK\n");
}

Podobně funguje i funkce strncmp(), ve které se porovnává jenom uvedený počet znaků.

strcat()

Funkce přidá druhý řetězec na konec prvního(string concatenate). Musíme si dát pozor, aby byl v prvním řetězci dostatek místa.

char skola[30] = "SPSE";
char mesto[10] = "Havirov";
strcat(skola, mesto);
//na konec retezce skola se prida retezec mesto (bez mezery, tu tam nemame)
printf("%s\n", skola); //vypise SPSEHAvirov

strupr() - funkce změní všechna písmena v řetězci na velká (string uppercase).

strlwr() - funkce změní všechna písmena v řetězci na malá (string lowercase).

strstr() - funkce hledá výskyt řetězce v jiném řetězci např. hledá slovo ve větě.

Design downloaded from Free Templates - your source for free web templates