Reťazce

Čo sú reťazce v C? Reťazec je postupnosť znakov, ktorá slúži na uchovávanie textu. Reťazce v jazyku C sú jednoducho polia znakov ukončených nulou ('\0'). Aby sme mohli používať niektoré príkazy na reťazce musíme si pridať knižnicu <string.h>

Deklarácia:


Inicializácia:


char meno[20]; // Deklarácia reťazca "meno" s kapacitou na 19 znakov a nulovým ukončením.


char meno[] = "Peter"; // Inicializácia reťazca "meno" hodnotou "Peter".


Prístup k individuálnym znakom: Znak v reťazci môžeme získať cez jeho index v reťazci.

char prvyZnak = meno[0]; // Prístup k prvemu znaku reťazca "meno" v našom prípade to bude písmeno P.


Operácie s reťazcami

Konkatenácia (spájanie) reťazcov: Reťazce môžeme spojiť operáciou konkatenácie.

Porovnávanie reťazcov: Porovnávanie dvoch reťazcov. 0 znamená že sú reťazce rovnaké

Neda sa porovnávať retazec1 == retazec2 je to to iste ako by ste porovnávali pole1 == pole2, porovnávate pointre a nie hodnoty poľa 

konkatenácia(spájanie):     strcat(retezec1, retezec2); // Spojenie reťazca1 s reťazcom2.

Porovnávanie:                      int vysledok = strcmp(retezec1, retezec2); // Porovnanie reťazca1 s reťazcom2.

Špeciálne znaky: V reťazcoch môžeme používať špeciálne znaky ako '\n' (nový riadok) alebo '\t' (tabulátor). Viac v tabuľke v kapitole Vstupy a výstupy 

Štandardné funkcie pre reťazce: Jazyk C ponúka množstvo štandardných funkcií na prácu s reťazcami, ako napríklad strlen, strcpy, strcat, a ďalšie.

strlen  -  slúži na zistenie dĺžky reťazca

strcpy  -  slúži na kopírovanie obsahu jedného reťazca do druhého

Vstup a výstup s reťazcami

Čítanie reťazcov zo vstupu: Pre čítanie reťazcov zo štandardného vstupu môžeme použiť scanf s formátovacím reťazcom %s. Avšak táto funkcia ma jednu chybu a to takú že ako náhle pri zadávaní reťazca z klávesnice použijeme medzeru tak všetko čo napíšeme za medzerou nám už nezoberie. Ak chceme načítať reťazec aj s medzerami musíme použiť funkciu fgets. Funkcia fgets (znamená "file gets") je funkcia v jazyku C, ktorá sa používa na načítanie reťazca (znakového poľa) zo štandardného vstupu alebo z iného súboru. Táto funkcia je užitočná pri načítavaní textu od používateľa z klávesnice alebo zo súboru

Výpis reťazcov: Pre výpis reťazcov môžeme použiť printf s formátovacím reťazcom %s.

syntax:                                                                            fgets(nazov, veľkosť, zdroj);

nazov - kam sa uloží načítaný reťazec

veľkosť - je maximálny počet znakov (vrátane znaku nového riadku), ktoré sa majú načítať. Pri poli sa najčastejšie používa funkcia sizeof(premenná)

zdroj - je ukazovateľ na súbor, z ktorého sa čítajú dáta. Pre načítanie zo štandardného vstupu (klávesnice) môžete použiť stdin.


Príklad:

napíšeme program v ktorom bude načítanie reťazca, vypísanie reťazca, kopírovanie jedného reťazca do druhého, spájanie reťazcov a porovnávanie reťazcov. 

#include <stdio.h>

#include <string.h>


int main() {

char zdrojovy[50]; // Definujeme pole pre zdrojový reťazec

char cielovy[100]; // Definujeme pole pre cieľový reťazec

char pridany[] = " a niečo navyše";

int dlzka, porovnanie;

// Načítanie reťazca od používateľa možnosť 1

printf("Zadajte zdrojový reťazec: ");

scanf("%s",zdrojovy); 

//alebo možnosť 2 fgets(zdrojovy, sizeof(zdrojovy), stdin);


// Vypísanie zdrojového reťazca

printf("Zdrojový reťazec: %s\n", zdrojovy);


// Kopírovanie zdrojového reťazca do cieľového reťazca

strcpy(cielovy, zdrojovy);


// Porovnanie dvoch reťazcov

porovnanie = strcmp(zdrojovy, cielovy);

printf("Reťazce sa rovnajú lebo výsledok porovnavania je: %d\n", porovnanie);


// Vypísanie cieľového reťazca po kopírovaní

printf("Cieľový reťazec po strcpy: %s\n", cielovy);


// Pridanie ďalšieho reťazca k cieľovému reťazcu

strcat(cielovy, pridany);

// Porovnanie dvoch reťazcov

porovnanie = strcmp(zdrojovy, pridany);

printf("Reťazce sa nerovnajú lebo výsledok porovnavania je: %d\n", porovnanie);

// Vypísanie cieľového reťazca po pridávaní

printf("Cieľový reťazec po strcat: %s\n", cielovy);


// Výpočet a výpis dĺžky cieľového reťazca

dlzka = strlen(cielovy);

printf("Dĺžka cieľového reťazca: %d\n", dlzka);


return 0;

}

možnosť 1 scanf
možnosť 1 scanf
možnosť 2 fgets
možnosť 2 fgets

Úloha číslo 1: Načítajte reťazec od používateľa a skopírujte ho do druhého reťazca pomocou strcpy. Potom vypíšte druhý reťazec.

#include <stdio.h>

#include <string.h>


int main() {

char zdrojovy[50];

char cielovy[50];


printf("Zadajte zdrojový reťazec: ");

fgets(zdrojovy, sizeof(zdrojovy), stdin);


strcpy(cielovy, zdrojovy);

printf("Cieľový reťazec: %s\n", cielovy);


return 0;

}

úloha 1
úloha 1

Úloha číslo 2: Načítajte dva reťazce od používateľa a spojte ich do jedného reťazca pomocou strcat. Potom vypíšte výsledný reťazec.

#include <stdio.h>

#include <string.h>


int main() {

char prvy[50];

char druhy[50];

char spojeny[100];


printf("Zadajte prvý reťazec: ");

fgets(prvy, sizeof(prvy), stdin);


printf("Zadajte druhý reťazec: ");

fgets(druhy, sizeof(druhy), stdin);


strcpy(spojeny, prvy);

strcat(spojeny, druhy);


printf("Spojený reťazec: %s\n", spojeny);


return 0;

}

úloha 2
úloha 2

Úloha číslo 3: Načítajte reťazec od používateľa a vypočítajte a vypíšte jeho dĺžku pomocou strlen.

#include <stdio.h>

#include <string.h>


int main() {

char retezec[100];


printf("Zadajte reťazec: ");

fgets(retezec, sizeof(retezec), stdin);


size_t dlzka = strlen(retezec);

printf("Dĺžka reťazca: %zu\n", dlzka);


return 0;

}

úloha 3
úloha 3

Úloha 4: Načítajte dva reťazce od používateľa, skopírujte prvý reťazec do druhého pomocou strcpy, spojte ich pomocou strcat a vypočítajte a vypíšte dĺžku výsledného reťazca pomocou strlen

#include <stdio.h>

#include <string.h>


int main() {

char prvy[50];

char druhy[50];

char spojeny[100];

int dlzka;


printf("Zadajte prvý reťazec: ");

fgets(prvy, sizeof(prvy), stdin);


printf("Zadajte druhý reťazec: ");

fgets(druhy, sizeof(druhy), stdin);


strcpy(spojeny, prvy);

strcat(spojeny, druhy);


printf("Spojený reťazec: %s\n", spojeny);

dlzka = strlen(spojeny);

printf("Dĺžka spojeného reťazca: %d\n", dlzka);


return 0;

}

úloha 4
úloha 4
Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky