Jazyk C - reťazce: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 2: Riadok 2:
 
[[Kategória:Informatika]]
 
[[Kategória:Informatika]]
 
{{Skripta_ZI}}
 
{{Skripta_ZI}}
 +
__TOC__
 
Reťazce sú vlastne jednorozmerné pole znakov ukončené nulovým znakom '\0'. Null zakončený reťazec teda obsahuje znaky, ktoré tvoria reťazec, za ktorým nasleduje null.
 
Reťazce sú vlastne jednorozmerné pole znakov ukončené nulovým znakom '\0'. Null zakončený reťazec teda obsahuje znaky, ktoré tvoria reťazec, za ktorým nasleduje null.
  

Verzia zo dňa a času 15:35, 26. máj 2020


Reťazce sú vlastne jednorozmerné pole znakov ukončené nulovým znakom '\0'. Null zakončený reťazec teda obsahuje znaky, ktoré tvoria reťazec, za ktorým nasleduje null.

Nasledujúce deklarácia a inicializácia vytvoria reťazec pozostávajúci zo slova „Ahoj“. Každý reťazec musí byť ukončený nulovým znakom '\0', preto veľkosť poľa znakov obsahujúceho reťazec je vždy o +1 väčší ako je počet znakov v slove.

Iniciálizácia

char slovo[5] = {'A', 'h', 'o', 'j','\0'};

Ak budete postupovať podľa pravidla inicializácie poľa, môžete vyššie uvedený príkaz napísať nasledovne.

char slovo[5] = "Ahoj";

Prezentácia pamäte vyššie definovaného reťazca v C.

Index 0 1 2 3 4
Premenná A h o j \0

V skutočnosti neukladáte nulový znak na koniec reťazcovej konštanty. Keď inicializuje pole, kompilátor C ho automaticky umiestni '\ 0' na koniec reťazca. Pokúsme sa vypísať vyššie uvedený reťazec.

 1 #include <stdio.h>
 2 
 3 int main () {
 4 
 5    char slovo[5] = {'A', 'h', 'o', 'j','\0'};
 6    /*poprípade môžme pole inicializovať takto:
 7    char slovo[5] = "Ahoj";
 8    */
 9 
10    printf("Vypisane slovo: %s\n", slovo);
11    return 0;
12 }

Vystup.

Vypisane slovo: Ahoj

C podporuje širokú škálu funkcií, ktoré manipulujú s reťazcami ukončenými nulovou hodnotou.

Funkcia Účel
1 strcpy (s1); Skopíruje reťazec s2 do reťazca s1.
2 strcat (s1); Pripojí reťazec s2 na koniec reťazca s1.
3 strlen (s1); Vráti dĺžku reťazca s1.
4 strcmp (s1); Vráti 0, ak sú s1 a s2 rovnaké; menej ako 0, ak s1 <s2; väčšie ako 0, ak s1> s2.
5 strchr (s1); Vracia ukazovateľ na prvý výskyt znaku ch v reťazci s1.
6 strstr (s1); Vráti ukazovateľ na prvý výskyt reťazca s2 v reťazci s1.

Nasledujúci príklad používa niektoré z vyššie uvedených funkcií.

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main () {
 4 
 5    char retazec1[12] = "Ahoj";
 6    char retazec2[12] = "svet";
 7    char retazec3[12];
 8    int  dlzka;
 9 
10    /* Skopírovanie reťazca 1 do reťazca 3 */
11    strcpy(retazec3, retazec1);
12    printf("strcpy( retazec3, retazec1) :  %s\n", retazec3);
13 
14    /* "Prilepenie" retazec2 za  retazec1*/
15    strcat( retazec1, retazec2);
16    printf("strcat( retazec1, retazec2):   %s\n", retazec1);
17 
18    /* Celková dlážka reťazca 1 po pripojení reťazca 2*/
19    len = strlen(retazec1);
20    printf("strlen(retazec1):  %d\n", dlzka);
21 
22    return 0;
23 }

Vystup.

strcpy( retazec3, retazec1):  Hello
strcat(retazec1, retazec2):   HelloWorld
strlen(retazec1):  10