Sunteți pe pagina 1din 4

Tipul char. Prelucrarea caracterelor.

Tipul char este un tip reprezentat pe 8 biti (un octet sau un byte). O variabila de tipul char poate
lua valori intregi in intervalul [-128, 127]. Constantele de tip char pot fi numere intregi sau
caracterele care au codurile ASCII intervalul specificat anterior. Desi valorile de tip char par a
cauza ambiguitate printre oameni deoarece pot fi reprezentate doua lucruri cu ajutorul lor,
caractere si numere intregi pentru calculator inseamna acelasi lucru, deoarece el retine orice
caracter cu ajutorul unei valorii numerice, denumita cod ASCII. De exemplu, caracterul A si
constanta 65 au pentru calculator aceeasi semnificatie, deoarece codul ASCII al caracterului A
este 65.

Tabel ASCII

Ce putem observa in cadrul tabelului ASCII?


1. Literele mari au valori ale codurilor ASCII consecutive;
2. Literele mici au valori ale codurilor ASCII consecutive;
3. Cifrele au valori ale codurilor ASCII consecutive;

Din observatiile de mai sus rezulta ca putem cu usurinta sa testam daca un caracter este litera
mare, litera mica sau cifra.

Exemplu: Expresia c >= ‘0’ && c <= ‘9’ va avea valoare true daca c este cifra.
Expresia c >= ‘a’ && c <= ‘z’ va avea valoare true daca c este litera mica.
Expresia c >= ‘A’ && c <= ‘Z’ va avea valoare true daca c este litera mare.

Exercitii: Transformare litera mica in litera mare: c = c – ‘a’ + ‘A’


Transformare din caracterul cifra in valoarea cifrei (exemplu: ‘7’ in 7): c = c – ‘0’

In continuare vom numi caractere albe ca fiind acele care afisate pe ecran nu au un rezultat
vizibil (spatiu, enter, tab, etc).

Declarare char: char a;

Citirea unui caracter:


De la tastatura Din fisier

C scanf(“%c”, &a); Functia scanf va fi folosita in mod obisnuit dar va fi


a = fgetc(stdin); folosit %c pentru a citit un caractere.
A = fget(fisier);
Unde fisier este o variabila de tipul FILE *.

C++ Ignora caracterele albe: Va fi folosita variabila declarata ca fiind un fisier in loc
cin >> a; de cin.
cin.get(a);
Afisarea unui caracter:
De la tastatura Din fisier

C printf(“%c”, Functia scanf va fi folosita in mod obisnuit dar va fi folosit %c


a); pentru a citit un caractere.
fputc(a, fputc(a, fisier);
stdout); Unde fisier este o variabila de tipul FILE *.

C++ cout << a; Va fi folosita variabila declarata ca fiind un fisier in loc de cout.
cout.put(a);

Vectori de caractere

Declarare: char a[LUNGIME_VECTOR];


Atentie: sirurile de caractere incep numerotarea de la pozitia 0
Accesarea unui caracter dintr-un sir de caractere: a[pozitie] (la fel ca la orice vector)
Un sir de caractere trebuie sa se termine cu caracterul ‘\0’ (marcatorul de final de sir)

Citirea unui sir de caractere:


De la tastatura Din fisier

C Citeste toate caracterele pana la primul Functia scanf va fi folosita in mod


caracter alb: scanf(“%s”, &a); obisnuit dar va fi folosit %s pentru a citit
Citeste pana la intalnirea lui enter: un caractere.
fgets(a,LUNGIME_VECTOR, stdin); fgets(a, LUNGIME_VECTOR,
fisier);
Unde fisier este o variabila de tipul
FILE *.

C++ Citeste toate caracterele pana la primul Va fi folosita variabila declarata ca fiind
caracter alb: cin >> a; un fisier in loc de cin.

citeste pana la intalnirea lui enter:


cin.getline(a, LUNGIME_VECTOR);

Afisarea unui sir de caractere:


De la tastatura Din fisier

C printf(“%s”, Functia printf va fi folosita in mod obisnuit dar va fi folosit %s pentru


a); a afisa un sir de caractere.

C++ cout << a; Va fi folosita variabila declarata ca fiind un fisier in loc de cout.

Functii utile pentru prelucrarea sirurilor de caractere:


Consideram ca sir1 si sir2 sunt siruri de caractere si c e de tipul char
 strlen(sir1) : returneaza numarul de caractere ale sirului sir1. Este recomandat sa
se salveze lungimea unui sir de caractere intr-o variabila si sa se foloseasca acea
variabila daca lungimea sirului nu se schimba, deoarece apelurile functiei sunt
costisitoare din punct de vedere al timpului
exemplu:
int n = strlen(sir1)
for (int i=0;i<n;i++)
prelucrare_caracter sir1[i];
http://www.cplusplus.com/reference/cstring/strlen/
 strcpy(sir1,sir2): copie in sirul sir1 caracterele din sirul sir2
http://www.cplusplus.com/reference/cstring/strcpy/
 strcmp(sir1,sir2): compara sir1 cu sir2.
Returneaza o valoare <0 daca sir1<sir2.
0 daca sir1 = sir2.
>0 daca sir1 > sir2.
Compararea se face lexicografic (alfabetic)
http://www.cplusplus.com/reference/cstring/strcmp/
 strchr(sir1, c): returneaza pointer la primul caracter egal cu c din sirul sir1
http://www.cplusplus.com/reference/cstring/strchr/
 strstr(sir1, sir2): returneaza pointer la prima aparitie a sirului sir2 in sirul sir1
http://www.cplusplus.com/reference/cstring/strstr/
 strcat(sir1, sir2): concateneaza sir2 la sir1
http://www.cplusplus.com/reference/cstring/strcat/

Exercitii:

Stergerea caracterului de pe pozitia k din sir:


Deoarece se recomanda ca sirurile care sunt date ca argument functiei strcpy sa nu
se suprapuna in memorie, folosim o variabila auxiliara.
strcpy(aux, sir+k+1)
strcpy(sir+k, aux)

Numararea tuturor aparitiilor literei ‘n’ intr-un sir de caractere


char* aparitie = strchr(sir1, ‘n’);
int nr_aparitii = 0;
while (aparitie!=NULL){
nr_aparitii++;
aparitie = strchr(aparitie+1, ‘n’);
}

Tema:
Doar vocale
Caractere
AfisareLitere
Kpal
PaindormMaxim
Secvsir
Rima

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