Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.

Podobné prezentace


Prezentace na téma: "Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen."— Transkript prezentace:

1 Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen jako posloupnost znaků, která je vždy ukončena znakem s ASCII kódem 0, např. Ahoj Hugo!\0 ● znak ukončení řetězce (\0) slouží jako zarážka pro funkce zpracovávající řetězce ● Pozor! Znaková konstanta 'A' je ukládána do jednoho bajtu typu char a žádný znak s kódem 0 se za něj neukládá

2 Řetězcová proměnná ● řetězcová proměnná slouží k uložení řetězce ● je to pole prvků typu char ● při vzniku se definuje počet znaků, které do ní lze maximálně uložit ● definice: char veticka[10]; /*staticky*/ ● nebo char *ret_dyn; /* dynamicky*/ ret_dyn=(char *) malloc(10);

3 Řetězcová proměnná ● Definice s inicializací char s1[10] = " ahoj " ; char s2[] = " nazdar " ; ● Co nelze!!! char str[10]; str = " ahoj " ; ● Co lze! char *str = " ahoj " ;

4 Čtení řetězce z klávesnice ● Příklad: scanf( " %s ", s1); ● před s1 není &!!! ● načte z klávesnice posloupnost znaků po případných bílých znacích až po nejbližší následující bílý znak (většinou Enter) ● někdy je vhodné omezit maximální počet načítaných znaků scanf( " %10s ", s1);

5 Tisk řetězce na obrazovku ● Příklad: printf( " %s ", s1); ● před s1 se nepíše *, příkaz z "%s" ví, že má očekávat ukazatel

6 Přístup k jednotlivým znakům ● k jednotlivým znakům lze přistupovat stejně jako k jednotlivým prvkům pole #define MAX 10 char s1[MAX]; for(i=0;i<MAX-1;i++) s1[i] = '*'; s1[MAX-1] = '\0'; printf( " %s ", s1); if (s1[3]=='x')...

7 Standardní řetězcové funkce ● funkce jsou uloženy v knihovně string ● před použitím je nutno knihovnu připojit #include ● Délka řetězce int strlen(char *s); např. delka = strlen( " ahoj " ); ● Kopírování řetězce char *strcpy(char *sem, char *odtud); např. strcpy(str, " ahoj " ); ● Připojení řetězce k řetězci char *strcat(char *sem, char *co); např. strcat(str, " + nazdar " );

8 Standardní řetězcové funkce ● Nalezení znaku v řetězci char *strchr(char *s, char c); pokud se znak c vyskytuje v s, je vrácen ukazatel na jeho první výskyt v řetězci zleva, jinak je vrácno NULL např. strchr(str, 'x') vrátí NULL if (strchr(str, 'x') == NULL) ● Porovnání dvou řetězců int strcmp(char *s1, char *s2); vrátí 0, pokud jsou s1 a s2 shodné; vrátí záporné číslo, pokud je s1<s2; jinak vrací kladné číslo

9 Standardní řetězcové funkce ● Nalezení podřetězce v řetězci char *strstr(char *s1, char *s2); nalezne první výskyt řetězce s2 v řetězci s1 a vrátí ukazatel na tento výskyt, jinak vrací NULL

10 Funkce s omezeným počtem zpracovávaných znaků ● funkce nezpracovávají řetězce až po nulový znak, ale zpracovávají jen určený počet znaků ● v názvu funkce je navíc písmenko n (number) ● Například char *strncpy(char *s1, char *s2, int max); zkopíruje nejvýše max znaků z s2 do s1

11 Práce s řetězcem pozpátku ● provádí stejné činnosti jako standardní funkce jen od konce směrem k počátku ● v názvu funkce je písmeno r (reverse) ● například char strrchr(char *str, char c); hledá znak c v řetězci str od konce směrem k začátku

12 Další informace ● Odkazy na referenční příručky naleznete na adrese www.jaroska.cz/elearning/ -–> odkaz C/C++ www.jaroska.cz/elearning/

13 Příklady k procvičení 1) Napište program, který načte z klávesnice řetězec a vypíše jej na obrazovku vepsaný do rámečku ze znaků * ************* * Ahoj Hugo * ************* 2) Existují slova, která se čtou stejně zleva i zprava (radar). Vytvořte prg., který bude tato slova generovat z jejich první načtené poloviny 3) Přečtěte řetězec délky max. 20 znaků a vytiskněte tyto znaky na jednu řádku seřazené podle abecedy vzestupně


Stáhnout ppt "Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen."

Podobné prezentace


Reklamy Google