zona de procesare: castring=biblioteca care gestioneaza functii ce prelucreaza siruri de caractere
tipul de tablou: char s[dim]; char*sir; s=vector cu maxim 10 000 de caractere sir=sir cu o lungime variabila si in sir retin adresa de la inceput
-spatiu de memorie ocupat=sizeof(char)*dim=1*dim=dim -structura omogeana=toate elementele sunt de acelasi tip=char -s=numele taboului de caractere=adresa la care incepe sirul de caractere -s[i]=caracterul de pe pozitia i, pot retine doar prin s tot sirul -`a`=un caracter=>1 octet -a=un sir de caractere=>retin 2 octeti, 1 octet pt a si un octet pt sfarsitul de sir -`\0`=caracterul ce da sfarsitul de sir -tip de dare special pentru sirurile de caractere size_t=unsigned short int -sirul se initializeaza in pozitia 0
1. Citirea sirurilor de caractere 1.1 Tastatura cin>>s; =citirea sirurilor pana la aparitia Space sau Enter =Introduc:Ana are mere=>s=A; cin.get(sir,dim); =cin.get(s,10000); citirea pana la Enter =introduce Ana are mere=>s=Ana are mere; 1.2 Fisier f>>s; f.get(s.dim);
2.Afisarea sirurilor de caractere 2.1 Monitor cout<<s; 2.2 Fisier g<<s;
FUNCTII CARE PRELUCREAZA SIRURI DE CARACTERE
1.Functii de copiere char*strcpy(char*dest, const char*sursa); char*strncopy(char*dest,const char*sursa, size_t lung); - strcpy, strncpyn copiaza sirul in sursa(primul parametru) ,s irul destinate(al doilea parametru),cele doua siruri vor fi identice la finalul apelului - -strncpy copiaza in dest primele lung caractere din sirul sursa Ex char s[1000],d[1000]; s=informatica; strcpy(d,s) =>d=nformatica strncpy(d,s,4) =>d=info;
-Functia copiere poate fi folosita si pt stergerea caracterelor din sir i n f o r m a t i c a s+3 s+7 s
strcpy(s,s+i)=>se muta adresa la inceput peste i caractere =>efect=stergerea primelor i caractere strcpy(s+i,s+j) j>i=>efect=eliminarea din sirul s a caracterelor de pe pozitiile i,i+1,i+2,,i+j-1 strcpy(s,s+5)=>s=matica strcpy(s+3,s+7)=>s=inftica; 2.Functii de concatenare char*strcat(char*dest, const char*sursa); char*strncat(char*dest,const char*sursa, size_t lung); Ex char s[100],d[100]; strcpy(s,Cocos); strcpy(d,Luca); strcat(s,); strcat(s,d); =>s=Cocos Luca; 3.Functii de comparare = a comapara 2 siruri de caractere-ordine lexicografica(din dictionar); -x si y=>exista o pozitie i astfel incat x[i]<y[i] (caractere comparate prin codul ASCII) si oricare j<i=>x[j]=y[j]; int strcmp(const char*s1,const char*s2) int strncmm(const char*s1,const char*s2, size_t lung) int stricmp(const char*s1,cont char*s2) int strnicpm(const char*s1,const char*s2,size_t_lung)
rezultat returnat >0 s1>s2 lexicografic <0 s1<s2 ==0 s1==s2 identice
strcpm=compararea cu diferente intre litere mari si mici strncmp=compararea pe primele lung caractere cu diferenta intre cele mari si mici stricmp=strcmp fara a face diferenta intre litere mari si mici a=A strnicmp=strncmp fara a afce diferenta intre litere mari si mici a=A
Ex char s1[100],s2[100]; s1=abcdf; s2=AbCD;
strcmp(s1,s2)>0 A=65 a=97 stricmp(s1,s2)>s0 s1 are mai multe caractere strncmp(s1,s2,s3)>0 strnicmp(s1,s2,s3)==0
4.Functia d elungime a sirului de caractere size_t strlen(const char*s)