Sunteți pe pagina 1din 11

S11-25.11.

2020

Prelucrarea sirurilor de caractere


In prelucrarea sirurilor de caractere limbajul C++ are o serie de functii grupate in
biblioteca de functii numita <string.h> sau <cstring>.

Sirurile de caractere le putem prelucra cu ajutorul urmatoarelor elemente:


 Vectorii de caractere
 Pointerii
 Functiile specifice sirurilor de caractere
Sirurile de caractere si pointerii
Tipul char*
Tipul de dată char* poartă numele de pointer la caracter. O variabilă de tip
pointer la caracter, este capabilă să reţină adresa de memorie a unui caracter.
Numele unei variabile de tip şir de caractere (sau vector în general), reprezintă
adresa de memorie a primului octet al şirului (vectorului) de aceea elementele
unui şir de caractere pot fi accesate prin intermediul adreselor lor, astfel:

char sir[]=”programator”;
cout<<sir /// programator am adresat şirul de la primul octet.
dacă scriem sir+1, vom adresa şirul de la al doilea octet
cout<<sir+1; /// rogramator adresa următorului octet( octelul doi din şir)
cout<<sir+2; /// ogramator adresa octetului 3 din sir
Observatie
Expresiile de forma: sir, sir+1, sir+2… sunt de tip char*, adrese de memorie ale
unor elemente de tip caracter.

Exemplul 1 Descoperiti tastand in codeblocks

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Introducând şirul abcdefgijk, în exemplul de mai sus, în fişierul


sir.out se va afişa:
sir:abcdefghijk
sir+1:bcdefghijk
sir+2:cdefghijk
sir+3:defghijk
(sir)[0]:a
(sir+1)[0]:b
(sir+1)[1]:c
(sir+1)[2]:d
(sir+2)[0]:c
(sir+2)[1]:d
sir+3=defghijk
sir+3=efghijk

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Algoritmii de prelucrare siruri sunt grupati in:

 Algoritmi de prelucrare a doua siruri de caractere


 Algoritmi de prelucrare un sir de caractere
 Algoritmi de prelucrare subsiruri de caractere
 Algoritmi de conversie intre tipul sir de caractere si tipul numeric

1. Prelucrarea a doua siruri de caractere


Algoritmii de prelucrare a doua siruri sunt:

 Copierea unui sir in altul


 Concatenarea(alipirea) a doua siruri
 Compararea a doua siruri
1.1Copierea unui sir in altul
Copierea caracter cu caracter

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Copierea cu ajutorul pointerilor

Functiile de copiere

strcpy(); stpcpy(); strncpy(); strxfrm();

Functia Sintaxa Actiunea ei


strcpy() strcpy(s2,s1) =copiaza caracterele
s1=sirul care se copiaza-sirul sursa sirului s1 in sirul s2
s2=sirul rezultat in care se copiaza-sirulinclusiv caracterul NULL
destinatie Functia intoarce un
pointer care indica
adresa sirului destinatie
char *strcpy(char *dest, const char *sursa);
stpcpy() stpcpy(s2,s1) =copiaza caracterele
sirului s1 in sirul s2
nu functioneaza in Codeblocks inclusiv caracterul NULL
Functia intoarce un
pointer care indica
adresa sfarsitului sirului
destinatie(adresa sirului
destinatie+ lungimea
sirului sursa
strncpy() strncpy(s2,s1,n) =copiaza din sirul s1 max
unde s1,s2-siruri iar n-nr intreg n caractere in sirul s2.
https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Daca strlen(s1)<n va fi si
copiat si NULLstrcpy()
In caz contrar NULL nu
este copiat si rezultatul
va fi un pointer care
indica adresa sirului
destinatie.
strxfrm() strxfrm(s2,s1,n) =copiaza din sirul s1 max
n-1 caractere in sirul s2
incepand cu primul
caracter si adauga la
sfarsit caracterul NULL.
Daca n-1>strlen(s1) se
copiaza tot s1 dar nu si
alte caractere. Functia
are ca rezultat lungimea
sirului ontinut in urma
copierii
Exemplu1-strcpy()

Exemplu2-strncpy()

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Exemplul3-strxfrm()

1.2 Concatenarea a doua siruri


Parcurgerea cu doi vectori de caractere cu ajutorul indicilor

Concatenarea cu ajutorul pointerilor


https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Utilizarea functiilor strcat() si strncat()

Functia Sintaxa Actiunea ei


strcat() strcat(s1,s2) =sunt adaugate din sirul sursa s2 in sirul
s1,s2=siruri destinatie s1 toate caracterele inclusiv NULL
strncat() strncat(s1,s2,n) =sunt adaugate din sirul s1 in sirul s2 n
caractere inclusive NULL. Daca n>strlen(s1)
s1,s1=siruri se adauga toate caracterele lui s1 nu si alte
n=nr intreg caractere.

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

1.3 Compararea a doua siruri


Parcurgerea cu doi vectori de caractere cu ajutorul indicilor

Compararea cu ajutorul pointerilor

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Utilizarea functiilor strcmp() si strncmp()

Functia Sintaxa Actiunea ei


strcmp() strcmp(s1,s2) =compara sirul s1 cu s2
Daca s1 identic cu s2 rezultatul este 0
Daca s1>s2 rezultatul este pozitiv.
Daca s1<s2 rezultatul este negativ.
stricmp() stricmp(s1,s2) =face comparare intre s1 si s2 dar fara sa faca
diferenta intre litere mari si litere mici.
strncmp() strncmp(s1,s2,n) =efect ca si strcmp() dar compara primele n
caractere
strncmpi() strnicmp(s1,s2,n) =efect ca si strncmp() fara sa faca diferenta
intre litere mici si litere mari

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

s1=s2

s1>s2 s1<s2

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/
S11-25.11.2020

Aplicatie. Studiu de caz


Sa se ordoneze n cuvinte citite de la tastatura.

https://www.cplusplus.com/reference/ https://www.cplusplus.com/reference/cstring/

S-ar putea să vă placă și