Sunteți pe pagina 1din 22

ȘIRURI DE CARACTERE

DEFINIȚIE

• Un șir de caractere este o succesiune de


caractere cuprinsă între două ghilimele și
care poate să conțină orice caractere: litere
mari și mici, caractere speciale (‘#’, ‘&’, etc) și
delimitatori (virgula, spațiul, etc).
• În C++ un șir de caractere poate fi definit ca
un vector de caractere.
DECLARAȚIE

 char nume[dim_max];

char sir[20];

 char * nume;

char *sir;
TIPUL POINTER
• Un POINTER este o dată care are ca valori
adrese de memorie.
int * p1  p1 este un pointer cu tipul de bază
int, adică va conține adresa de memorie la
care este memorat un număr întreg
int i=10, *p ,x;
p=&i  Referențiere: atribuim
pointerului p adresa variabilei i
x= *p  Deferențiere: atribuim
variabilei x valoarea memorată în zona de
memorie a cărei adresă de început este
memorată de p
 Lungimea șirului de caractere = numărul de
caractere pe care le conține șirul.

 La sfârșitul șirului compilatorul C++


memorează caracterul NULL având valoarea 0
binar. Are rolul de a marca sfârșitul de șir.

char s[4]=“test”;  eronat pentru că trebuia


alocat spațiu și pentru sfârșitul de șir.
char s[10]=“test”;  corect, iar pozițiile rămase
libere la sfârșitul vectorului vor fi ocupate cu
caracterul NULL
CITIREA ȘI AFIȘAREA
UNUI ȘIR DE CARACTERE
int main()
{char s[4];
cout<<"s=";cin>>s;
cout<<s;
return 0;
}
CITIREA ȘI AFIȘAREA
UNUI ȘIR DE CARACTERE
int main()
{char s[100];
cout<<"s=";cin.get(s,100);
cout<<s;
return 0;
}
int main()
{char s[15],*p;
cout<<"s=";cin.get(s,100);
cout<<s<<endl;
cout<<"s+1 = "<<(s+1)<<endl;
cout<<"s+2 = "<<(s+2)<<endl;
cout<<"s+3 = "<<(s+3)<<endl;
cout<<endl;
cout<<"(s)[0]: "<<(s)[0]<<endl;
cout<<"(s+1)[0]: "<<(s+1)[0]<<endl;
cout<<"(s+1)[1]: "<<(s+1)[1]<<endl;
cout<<"(s+1)[2]: "<<(s+1)[2]<<endl;
cout<<"(s+2)[0]: "<<(s+2)[0]<<endl;
cout<<"(s+2)[1]: "<<(s+2)[1]<<endl;
cout<<endl;
p=s+3;
cout<<"s+3 = "<<p<<endl;
p++;
cout<<"s+4 = "<<p<<endl;
return 0;
}
FUNCȚII PREDEFINITE
PENTRU ȘIRURI DE CARACTERE
DETERMINAREA LUNGIMII UNUI ȘIR DE
CARACTERE
int strlen(const char *s);

char s[]=“C++”;
strlen(s)=3
COPIEREA UNUI ȘIR ÎNTR-UN ALT ȘIR
strcpy(dest, sursa);

Copiază șirul sursa în șirul dest și întoarce


adresa lui dest.
dest este un ”parametru dat prin referință”,
jucând rolul de valoare returnată de către
funcție.
sursa poate fi dat printr-o variabilă sau printr-
o constantă șir de caractere.
COPIEREA UNUI ȘIR ÎNTR-UN ALT ȘIR
strncpy(dest, sursa,nr);

Copiază în șirul dest primele nr caractere din


șirul sursa
CONCATENAREA A DOUĂ ȘIRURI
strcat(dest, sursa)
Lipește șirul sursa la sfârșitul șirului dest.
Rezultatul returnat de funcție este șirul dest,
(prin parametru de tip referință).
strncat(dest, sursa,nr)
Lipește la sfârșitul șirului dest primele nr
caractere din șirul sursa.
Șirul sursa poate fi o variabilă sau o constantă,
iar șirul dest poate fi doar o variabilă.
COMPARAREA ȘIRURILOR
Compararea a două șiruri vizează
ordonarea lor alfabetică și se face caracter cu
caracter.
Are loc de fapt compararea codurilor ASCII
asociate caracterelor.
COMPARAREA ȘIRURILOR
strcmp(sir1, sir2)
Funcția returnează
 O valoare mai mică de 0, dacă sir1 < sir2
 0 , dacă sir1=sir2
 O valoare mai mare de 0, dacă sir1 >sir2

ex: sir1=“programare”
sir2=“programe”
COMPARAREA ȘIRURILOR
strncmp(sir1, sir2,nr)
Compară din punct de vedere lexicografic
primele nr caractere din sir1 și sir2.

stricmp(sir1, sir2)
strincmp(sir1, sir2,nr)
Sunt asemănătoare cu strcmp și strncmp,
cu deosebirea că nu fac deosebire între litere
mari și mici.
CĂUTAREA UNUI CARACTER
ÎNTR-UN ȘIR
dest=strchr(sursa, caracter)
Caută caracter în șirul sursa și returnează
în dest adresa primei apariții a caracterului în
sursă.
Funcția va returna ”o porțiune” din șirul
sursa, începând de la prima apariție a
caracterului caracter până la sfârșitul șirului.
În cazul în care nu se găsește caracterul în
șir funcția va returna NULL.
CĂUTAREA UNUI CARACTER
ÎNTR-UN ȘIR
dest=strrchr(sursa, caracter)

Funcția returnează adresa ultimei apariții a


caracter în șirul sursa.
CĂUTAREA UNUI SUBȘIR
ÎNTR-UN ȘIR
dest=strstr(sir1, sir2)
Caută sir2 în șirul sir1 și returnează în dest
adresa primei apariții a sir2 în sursă.
Funcția va returna ”o porțiune” din șirul
sir1, începând de la prima apariție a sirului
sir2 până la sfârșitul șirului sir1.
În cazul în care nu se găsește sir2 în sir1
va returna NULL.
INVERSAREA UNUI ȘIR
dest=strrev(sursa)
Funcția realizează inversarea șirului sursa
în șirul dest.
#include<iostream>
using namespace std;
int main()
{char s[]="vara";
strrev(s);
cout<<s;
}
TRANSFORMAREA UNUI ȘIR
ÎNTR-UN NUMĂR
nr=atol(sir)
Transformă sir într-un număr întreg lung.
nr=atoi(sir)
Transformă sir într-un număr întreg.
nr=atof(sir)
Transformă sir într-un număr real.
TRANSFORMAREA UNUI NUMĂR
ÎNTR-UN ȘIR
itoa(nr, sir, baza)
Transformă numărul întreg nr scris în baza de
numerație baza, în șirul corespunzător
ltoa(nr, sir, baza)
Transformă numărul întreg lung nr în sir.

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