1.Declararea unui sir de caractere.
char nume[nr];
Exemplu:
char s[256];
In memoria interna sirul este stocat sub forma unui vector de caractere. Fiecare element al sirului (incepand cu 0) retine codul ASCII al caracterului pe care il memoreaza. Ultimul element al sirului este caracterului nul care este memorat automat. Trebuie rezervate lungimea_sirului+1 caractere (+1 pentru caracterul nul).
Limbajul C/C++ permite initializarea unui tablou de caractere printr-o constanta sir, care include automat caracterul null odata cu declararea sirului:
char s[ ] = "informatica"; // compilatorul va determina spatiul necesar
2.Citirea sirului de caractere de la tastatura
Se utilizeaza functia cin.get() din string.h
exemplu:
cout<<"Introduceti sirul:"; cin.get (s,255);
Pentru a citi doua siruri de caractere se utilizeaza cin.get() fara parametri, astfel:
cin.get(s1,15); cin.get(); cin.get(s2,10);
3.Afisarea sirului:
cout<<s;
Se poate utiliza si afisarea caracter cu caracter:
for ( i = 0; i < strlen (s); i++) cout<< s [ i ];
unde strlen ( ) este functia care determina lungimea sirului
Functia STRTOK ()
Funcţia are rolul de a împarţi şirul str în subşiruri separate de orice caracter aflat în lista de delimitatori, prin apelarea ei succesivă.
La primul apel, parametrul str trebuie sa fie un şir de caractere, ce urmează a fi împartit. Apelurile urmatoare, vor avea în loc de str, NULL
conţinuând împarţirea aceluiaşi şir.
Funcţia va returna la fiecare apel un un subsir, ignorând caracterele cu rol de separator aflate în şirul de delimitatori. O dată terminat şirul, funcţia va returna NULL
.
Forma generala : strtok( str, s)
Exemplu:
-
1.Afisarea cuvintelor din sir pe randuri separate:
#include #include using namespace std; int main() { char s[256], *p; cin.get(s,255); p=strtok(s," "); while (p) { cout<<p<<endl; p=strtok(NULL, " ") ; } return 0; }
2.inversarea cuvintelor din sir
#include #include using namespace std; int main() { char s[256], *p; cin.get(s,255); p=strtok(s," "); while (p) {strrev(p); cout<<p<<endl; p=strtok(NULL, " ") ; } return 0; }
FUNCTII PENTRU OPERATII CU SIRURI DE CARACTERE
Functiile pentru operatii cu siruri se gasesc in header-ul cstring.
1. Functia strlen
int strlen(nume_sir); – returneaza lungimea efectiva a unui sir (fara a numara terminatorul de sir).
Exemplu: char a[50]=”ora de informatica”; - strlen(a) = 18
2. Functia strcpy
strcpy(sir_destinatie,sir_sursa); – copiaza sirul sir_ sursa in sir_destinatie
Exemplu: char a[50]=”primul sir”,b[40]=”al doilea sir”; a=b; //eroare strcpy(a,b); a = ”al doilea sir”; b=”al doilea sir”;
3.Functia strcat
strcat(dest,sursa); – concateneaza doua siruri de caractere
Exemplu: char *a=”vine ”,*b=”vacanta”; strcat(a,b); a = ”vine vacanta”;
4.Functia strchr
strchr(sir,c); – are rolul de a cauta caracterul c in sirul sir. Cautarea se face de la stanga la dreapta, iar functia intoarce adresa subsirului care incepe cu prima aparitie a caracterului c. Daca nu este gasit caracterul, functia returneaza 0.
Exemplu: char *s=”informatica”,b=’t’; cout<<strchr(s,b); se tipareste ”tica”;
5.Functia strcmp
int strcmp(sir1,sir2); – are rolul de a compara doua siruri de caractere. Valoarea returnata este <0 (daca sir10 (daca sir1>sir2). Functia strcmp face distinctie intre literele mari si cele mici ale alfabetului.
Obs: Functia strcmp returneaza diferenta dintre codurile ASCII ale primelor caractere care nu coincid
6.Functia strstr
strstr(sir1,sir2); – are rolul de a identifica daca sirul sir2 este subsir al sirului sir1. Daca e, functia returneaza adresa de inceput a subsirului sir2 in sirul sir1, altfel returneaza 0. In cazul in care sir2 apare de mai multe ori in sir1, se returneaza adresa de inceput a primei aparitii. Cautarea se face de la stanga la dreapta.
7.Functia strlwr
strlwr(sir); – are rolul de a converti toate literele mari din sir in litere mici. Restul caracterelor raman neschimbate.
8.Functia strupr
strupr(sir); – are rolul de a converti toate literele mici din sir in litere mari. Restul caracterelor raman neschimbate