FUNCȚII PENTRU OPERAȚII
CU ȘIRURI DE CARACTERE
Functiile
pentru
operatii cu siruri se gasesc in
header-ul
.
Ø Functia strlen
int strlen
(nume_sir); – returneaza
lungimea efectiva a unui sir
(fara a numara
terminatorul
de
sir).
Exemplu:
char a[50]=”ora de informatica”; =>
strlen(a) = 18
Ø
Functia strcpy
strcpy(sir_destinatie,sir_sursa); – copiaza sirul sir_ sursa
in sir_destinatie (se
simuleaza
atribuirea a=b).
ATENTIE!! Nu este permisa
atribuirea intre
doua siruri
de caractere folosind operatorul =
. Atribuirea se face folosind functia strcpy
.
Exemplu:
char
a[50]=”primul sir”,b[40]=”al doilea sir”;
a=b; //eroare
strcpy(a,b); =>
a = ”al doilea
sir”; b=”al doilea sir”;
Ø Functia
strcat
strcat(dest,sursa); – adauga sirului dest sirul sursa. Sirul sursa ramane nemodificat.
Operatia se
numeste concatenare si
nu este comutativa.
Exemplu:
char
*a=”vine ”,*b=”vacanta?”; strcat(a,b);
=> a = ”vine vacanta?”;
Ø Functia strncat
strncat(dest,sursa,nr);
– adauga
dest primele nr caractere din sirul sursa.
Sirul sursa ramane
1
nemodificat.
Exemplu:
char *a=”vine ”,*b=”vacanta?”; strncat(a,b,4); => a =
”vine
vaca”;
Ø Functia strchr
strchr(sir,c); –
are rolul de a cauta caracterul c in sirul
sir. Cautarea se face
de la stanga la dreapta, iar functia intoarce adresa
subsirului care incepe cu
prima aparitie
a caracterului c. Daca nu este
gasit caracterul, functia returneaza 0. Diferenta dintre
adresa sirului initial si cea a subsirului returnat reprezinta
chiar pozitia caracterului cautat in
sirul dat.
Exemplu:
char *a=”acesta este un
sir”, b=’t’, c=’x’, *d;
cout<<strchr(a, b);
=> se tipareste
”ta este un sir”;
cout<<strchr(a, c); => nu se
tipareste
nimic (se tipareste
0 daca
se face
o conversie la
int a lui
strchr(a,c)
;
d=
strchr(a,b);
cout<<”Caracterul
apare prima data
la pozitia
”<<a-d;
Ex: Sa se afiseze
toate pozitiile unui
caracter intr-un
sir
#include
#include using namespace std;
int main()
{char a[100],*p,c;
cin.get(a,100); cin>>c; p=strchr(a,c);
while (p)
{cout<<"Pozitia "< < a - p;
p=strchr(p,c);}
return 0;}
Ø Functia strrchr
strrchr(sir,c);
– are acelasi rol cu
strchr, cu deosebirea ca
returneaza adresa ultimei aparitii a caracterului
(cautarea se face de la dreapta
spre
stanga; r = right)
Ø Functia st
rcmp
int
strcmp(sir1,sir2); – are rolul
de a compara doua siruri de caract
ere. Valoarea
returnata este <0 (daca sir1<
sir2), =0 (daca sir1=sir2) si >0 (daca sir1>sir2). Functia strcmp
face distinctie
intre literele
mari si cele mici
ale alfabetului.
Obs
: Functia
strcmp returneaza diferenta dintre codurile ASC
II ale primelor
caractere care
nu coincid