Documente Academic
Documente Profesional
Documente Cultură
iruri de caractere
A. Vectori de caractere
B. Tipul char *
C. Funcii pentru lucrul cu iruri de caractere
1. Vectori de caractere
A1. Declararea vectorilor de caractere
char s1[10];
char s2[10]="sirul 2";
char s3[]="sirul 3";
s1 = vector de caractere care poate conine maxim 9 caractere (s-au alocat 10 octei).
s2 = vector de caractere care poate conine maxim 9 caractere i care conine 7 caractere (s-au alocat 10 octei).
s = vector de caractere care poate conine maxim 7 caractere i car conine 7 caractere (s-au alocat ! octei).
"reeli#
//char s4[];
//char s5[5]="abcdef";
s$ =s-au alocat 0 octei = eroare de compilare
s% =s-au alocat % octei i s-au iniiali&at primele ' po&iii = eroare de compilare
(tenie ))
*ac+ instruciunile pro,ramului adau,+ caractere unui ir de caractere- dep+ind ast.el spaiul alocat-
operaiile se vor e.ectua eronat. /ste posi0il s+ se modi.ice ast.el alte varia0ile. 1e recomand+ alocarea unui
spaiu su.icient de mare pentru evitarea uni ast.el de ca&.
A2.Vizualizarea unui ir de caractere (modul de memorare)
char s[15]=LIMBAJUL C++;
2 3 4 5 ( 6 7 2 8 9 9 :0
- s-au alocat 1% octei
- s-a memorat irul de lun,ime 12
- dup+ ultimul caracter din ir a .ost ad+u,at automat caracterul ;722 (:0 adic+ caracterul cu codul
(1833 0) indic<nd ast.el s.<ritul irului.
- au r+mas li0eri 2 octei
/xplicaii
=entru memorarea unui ir de caractere- compilatorul reine doar adresa primului caracter din ir.
8elelalte caractere vor .i memorate .olosind octeii urm+tori.
8ompilatorul indic+ s.<ritul irului de caractere plas<nd un caracter :0 (caracterul cu codul (1833 0)
dup+ ultimul caracter din ir. (st.el- un ir de caractere este identi.icat de compilator prin adresa de >nceput
(adresa primului caracter din ir) i primul caracter :0 ,+sit printre octeii urm+tori primului caracter.
1
Viorel Tompea iruri de caractere C/C++ Clasa a IX-a
/xemplu#
char s1[11]="Informatica";
char s2[100]="sir de lungime maxima 99";
cout <<"s1: "<< s1 << endl;
s2[5]=\0;
cout <<"s2: "<< s2 << endl;
1e va a.ia#
s1: Inor!aticasir de lun"i!e !a#i!a $$
s%: sir d
&#plicaii
?irul s1 conine 11 caractere. =entru acest ir s-au alocat 11 octei. *intre cei 11 octei alocai- unul ar .i
tre0uit s+ .ie re&ervat pentru '()*. 3niiali&<nd irul cu 11 caractere- caracterul '()* nu a mai .ost plasat la s.<ritul
irului.
?irul s% conine %+ de caractere. =entru a-l memora- compilatorul i-a alocat un spaiu de 1)) de octei
>ncep<nd (din >nt<mplare) de la adresa imediat urm+toare s.<ritului lui s1.
*atorit+ .aptului c+ la s.<ritul irului s1 nu exist+ '()*- pentru a-l a.ia- compilatorul parcur,e octeii
succesivi de memorie p<n+ la ,+sirea unui alt '()*. (cesta se va a.la la s.<ritul lui s%.
(l cincilea caracter din s% a .ost >nlocuit cu '()*. =entru a-l a.ia pe s%- compilatorul parcur,e octeii
succesivi- >ncep<nd cu adresa primului caracter din s%- p<n+ la >nt<lnirea unui '()*. (cest '()* va .i ,+sit pe
po&iia %. (st.el compilatorul consider+ c+ acolo se termin+ irul s%.
,-ser.aie:
8aracterul 'a* se memorea&+ pe 1 octet- pe c<nd irul de caractere /a0 se memorea&+ pe doi octei#
a a :0
8aracterul @aA ?irul de caractere BaC
A3. Afiarea vectorilor de caractere.
char s[15]="Informatica";
void main (void)
{
/* 1.*/ cout <<s;
/* 2.*/ for (int i=0; s[i]; i++) cout <<s[i];
/* 3.*/ for (i=0; s[i]; i++) putc (s[i], stdout);
/* 4.*/ for (i=0; s[i]; i++) cout.put(s[i]); cin.get();/*cout<<flush*/
}
2
Viorel Tompea iruri de caractere C/C++ Clasa a IX-a
&#plicaii:
1. 12a utili3at aiarea C++.
8ompilatorul cunoate adresa de >nceput a irului de caractere- identi.icat+ prin s. Dncep<nd de la aceast+ adres+- se vor a.ia
coninuturile octeilor urm+tori- p<n+ la >nt<lnirea caracterului '()* (caracterul cu codul (1833 0).
%. 12a utili3at aiarea C++. 4caracter cu caracter5
?irul este a.iat caracter cu caracter .olosind .luxul cout. 1e a.iea&+ primul caracter# s6)7- apoi urm+torul# s6178 .a.m.d.-
p<n+ la >nt<lnirea caracterului '()*.
/xpresia s6i7 va .i evaluat+ ca .iind ) atunci c<nd s6i7 va conine '()A- adic+- caracterul cu codul (1833 0.
9. 12a utili3at aiarea C. 4caracter cu caracter5
1-a a.iat irul caracter cu caracter .olosind .uncia putc.
Euncia putc scrie un caracter >ntr-un .iier indicat de cel de-al doilea parametru. =entru a.iarea pe monitor- cel de-al
doilea parametru tre0uie s+ .ie stdout
Euncia putc este de.init+ >n .iierul stdio.h
putc(F:nF- stdout)G HH 8I 9 2E
putc(10- stdout)G HH 8I 9 2E
putc(1- stdout)G HH 8I
:
12a utili3at aiarea C++. 4caracter cu caracter5
1-a a.iat irul caracter cu caracter .olosind .uncia cout.put45.
=arametru .unciei tre0uie s+ .ie un cod (1833 al caracterului.
Euncia cout.put45 utili&ea&+ un 0u..er (&on+ de memorie) >n care sunt p+strate caracterele
8aracterele apar pe ecran a0ia dup+ ce se tastea&+ un caracter- sau se e.ectuea&+ o nou+ scriere sau citire.
=entru a .ora tip+rirea imediat+ a caracterelor- a.iate cu cout.put se apelea&+# cout;;lush.