Sunteți pe pagina 1din 4

SIRURI DE CARACTERE

Declarare: char sir[dim]; sau char *sir; char s1[256], s2[20]=buna ziua,s3[]=ola, *s4, *s5=aaaabb,s6[10]= ; char c, d=a; citire: cin>>sir; (daca nu sunt spatii, citeste pana la intalnirea primului caracter alb-doar un cuvant) cin.get(sir,dim); (daca are spatii) 255 caractere cin.get(s1,256); citeste maxim

cin.get(s1,20,#); citeste pana la intalnirea caracterului #, dar nu mai mult de 19 caractere cin.get() se foloseste dupa un cin.get cu parametrii, ptr a descarca din fluxul de date ultimul caracter citit delimitatorul (\0, enter) , care ar impiedica efectuarea unei a doua citiri. ex. cin.get(s1,20); cin.get(); cin.get(s2,20); afisare: cout<<sir; prelucrare caractere: for(i=0;i<strlen(s);i++) //prel s[i] Observatii: litera-32=LITERA cifra=cifra- 48 a are codul 97 A are codul 65 0 are codul 48

Functii de prelucrare a sirurilor de caractere


a. incluse in <string.h> Nr. Crt . 1 2 2 Numele functiei strlen (s); strcpy (s1, s2); strncpy(s1,s2,nr); Rolul functiei Determina lungimea sirului Copie sirul s2 in s1 Copie in sirul s1 Exemplu strlen(siruri)=6 char s2[]=exemplu, s1[10], s3[10];

Nr. Crt .

Numele functiei

Rolul functiei primele nr caractere din s2

Exemplu strcpy(s1,s2); -> s1=exemplu strncpy(s3, s2, 3); -> s3=exe char s2[]=exemplu, s1[]=bun, s3[10]; strcat(s1,s2); ->s1=bunexemplu strncat(s1,s2,1); ->s1=bune strupr(IoniCA34); IONICA34 strlwr(IoniCA34); ionica34 Strcmp(Nicu, Andrei)>0 Strcmp(Ion,Ion)=0 Strcmp(nicu,Nicu)>0

3 3

strcat(s1,s2); strncat(s1,s2,nr);

4 5

strupr(s); strlwr(s);

strcmp(s1,s2);

6 7

stricmp(s1,s2); strrev(s);

Adauga la sfarsitul lui s1 sirul s2 Adauga la sfarsitul lui s1 primele nr caractere din s2 Transforma litere mici ale lui s in litere mari, restul caracterelor ramanand neschimbate Transforma litere mari in litere mici restul caracterelor ramanand neschimbate Compara s1 cu s2 din punct de vedere alfabetic. Rezultatul comparrii este : >0 daca s1>s2; =0 daca s1=s2; <0 daca s1<s2 Compara s1 cu s2 fara a face distinctie intre litere mari si mici Inverseaza sirul s Determina adresa primei aparitii a caracterului c in sirul s. Daca nu se afla c in s atunci rezultatul este 0 (pointerul NULL) Determina adresa ultimei aparitii a caracterului c in sirul s. Daca nu se afla c in s atunci rezultatul este 0 (pointerul NULL) Determina adresa de inceput a primei aparitii a sirului s2 in sirul s1. Daca nu se afla s2 in s1 atunci rezultatul este 0 (pointerul NULL) Determina adresa de inceput a ultimei aparitii a sirului s2 in sirul s1. Daca nu se afla s2 in s1 atunci

Stricmp(nicu,Nicu)=0 char s[]=acasa; strrev(s); s=asaca char s[]=abracadabra, c=b,s1[]=br; cout<<strchr(s,c); bracadabra cout<<strrchr(s,c); bra cout<<strstr(s,s1); bracadabra cout<<strrstr(s,s1); bra cout<<strchr(s,x);0 Obs: verificarea daca un character c este vocala: if(strchr(aeiouAEIOU,c)!=0) .. obs: afisarea pozitiei pe care se afla un character intr-un sir : cout<<strchr(s,c)-s; (analog la restul functiilor

strchr(s,c);

strrchr(s,c);

10

strstr(s1,s2);

11

strrstr(s1,s2);

Nr. Crt .

Numele functiei

Rolul functiei rezultatul este 0 (pointerul NULL) Inlocuieste separatorul prin caracterul nul si furnizeaza ca rezultat un pointer catre primul caracter al primei entitati (extrage cuvinte dintr-un text, in care cuvintele sunt separate prin caractere din s2, cu rol de separatori)

Exemplu de cautare) Prelucrarea entitatilor dintr-un sir: p=strtok(s,sep); while(p!=0) { //prelucram p p=strtok(0, sep); }

12

strtok(s1,s2);

b. incluse in <stdlib.h> (functii de conversie) Nr. Crt . 13 Numele functiei x=atoi (s) Rolul functiei Converteste sirul s intr-o variabila de tip int. Daca sirul contine si alfel de caractere decat cifre, rezultatul conversiei e 0 (conversia esueaza) Converteste sirul s intr-o variabila de tip float. Daca sirul contine si alfel de caractere decat cifre, rezultatul conversiei e 0 (conversia esueaza) Converteste sirul s intr-o variabila de tip long. Daca sirul contine si alfel de caractere decat cifre, rezultatul conversiei e 0 (conversia esueaza) Converteste sirul s intr-o variabila de tip long double. Daca sirul contine si alfel de caractere decat cifre, rezultatul conversiei e 0 (conversia esueaza) Converteste un numar nr de tip int scris in baza baza intr-un sir de caractere (baza e de obicei 10) Converteste un numar nr de tip long scris in baza baza intr-un sir de caractere (baza e de obicei 10) Converteste un numar nr de tip unsigned long scris in baza baza intr-un sir de Exemplu

x=atoi(123); x=123 x=atoi(1a23); x=0

14

x=atof(s)

x=atof(123.45); x=123.45 x=atoi(1a23.cd); x=0 x=atol(123456789); x=123456789 x=atol(1a23575986); x=0 x=atof(123.45); x=123.45 x=atoi(1a23.cd); x=0 itoa(123,s,10); s= 123

15

x=atol(s)

16

x=atold(s )

17

itoa(nr, sir, baza) ltoa(nr, sir, baza) ultoa(nr, sir, baza)

18

19

Nr. Crt .

Numele functiei

Rolul functiei caractere (baza e de obicei 10)

Exemplu

#include<ctype.h>
isalnum(c) valoarea 1 daca, caracterul este o litera sau o cifra isalpha(c) valoarea 1 daca, caracterul este o litera isdigit(c) valoarea 1 daca ,caracterul este o cifra in baza 10 c<=9)... islower(c) valoarea 1 daca, caracterul este o litera mica c<=z)... isupper(c) valoarea 1 daca, caracterul este o litera mare c<=Z)... if(c>=0 && if(c>=a&& if(c>=A&&

ispunct(c) valoarea 1 daca ,caracterul este un caracter de punctuatie isspace(c) valoarea 1 daca,caracterul este spatiu,tab,cr toupper(c) transforma caracterul c in litera mare tolower(c) transforma caracterul c in litera mica c=c-32; c=c+32; c=c+a-A