You are on page 1of 6

Funcii care lucreaz cu iruri de caractere

unsigned int strlen(char *sir); Efect: returneaz numrul de caractere al unui ir de caractere, fr a lua n considerare caracterul nul de la sfritul irului Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]; cout<<dati sirul a=;cin.get(a,100); cout<<sirul are <<strlen(a)<< caractere; } char *strcpy(char *dest,char *sursa); Efect: copiaz irul de la adresa sursa la adresa destinaie. Copierea se termin la ntlnirea caracterului nul. Funcia returneaz adresa irului destinaie. Simuleaz operaia de atribuire a=b. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=crocodil,b[100]=hipopotam; strcpy(a,b); cout<<sirul a: <<a<<endl; //hipopotam cout<<sirul b: <<b<<endl; //hipopotam } char *strncpy(char *dest,char *sursa,unsigned int n); Efect: copiaz primii n octei din irul de la adresa surs la adresa destinaie, fr a aduga caracterul nul. Funcia returneaz adresa irului destinaie. Sirul surs rmne nemodificat. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=crocodil,b[100]=hipopotam; strncpy(a,b,4); cout<<sirul a: <<a<<endl; //hipo cout<<sirul b: <<b<<endl; //hipopotam } char *strcat(char *dest,char *sursa); Efect: adaug irului de la adresa destinaie, naintea caracterului nul irul de la adresa surs. irul de la adresa surs rmne nemodificat. Operaia se numete concatenare. La adresa destinaie vom avea irul destinaie urmat de irul surs. irul destinaie are lungimea egal cu suma lungimilor irurilor. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=mama ,b[100]=merge; strcat(a,b); 1

cout<<sirul a: <<a<<endl; //mama merge cout<<sirul b: <<b<<endl; //merge } char *strncat(char *dest,char *sursa, unsigned int n); Efect: adaug irului de la adresa destinaie, naintea caracterului nul primii n octei ai irul de la adresa surs. irul de la adresa surs rmne nemodificat. Funcia returneaz adresa de nceput a irului destinaie. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=mama ,b[100]=merge; strncat(a,b,3); cout<<sirul a: <<a<<endl; //mama mer cout<<sirul b: <<b<<endl; //merge } char *strchr(char *sir,int car); Efect: caut de la stnga la dreapta, caracterul car n irul de caractere sir. Dac este gsit, funcia ntoarce adresa subirului care ncepe cu prima apariie a caracterului citit i se termin cu carcterul nul. Dac nu este gsit intoarce o expresie de tip char* cu valoarea 0. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=crocodil; cout<<strchr(a,o); //ocodil } char *strrchr(char *sir,int car); Efect: caut de la dreapta la stnga, caracterul car n irul de caractere sir. Dac este gsit, funcia ntoarce adresa subirului care ncepe cu ultima apariie a caracterului citit i se termin cu carcterul nul. Dac nu este gsit intoarce o expresie de tip char* cu valoarea 0. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=crocodil; cout<<strrchr(a,o); //odil } char *strstr(char *sir1,char *sir2); Efect: identific dac irul sir2 este subir(caractere succesive) al irului sir1. dac este gsit, funcia returneaz adresa sa de nceput n cadrul irului s1, altfel returneaz 0. Cutarea se face de la stnga la dreapta. Dac sir2 apare de mai multe ori, returneaz adresa primei sale apariii. Exemplu: #include<string.h> #include<stdio.h> void main() 2

{ char a[100],b[10],*p; gets(a); gets(b); p=strstr(a,b); if (p) printf(este subsir si incepe de la indicele %d,p-a); else printf(nu este subsir); } char *strtok(char *sir1,char *sir2); Efect: separ irul sir1 n entiti delimitate de unul sau mai multe carctere din irul sir2 (acestea avnd rol de separatori).Apelul funciei se face prima dat sub forma strtok(sir1,sir2) - funcia ntoarce adresa primului caracter al primei entiti - i a doua oar sub forma strtok(NULL,sir2) i funcia ntoarce adresa primului caracter al urmtoarei entii i dup es este adugat caracterul nul. Cnd irul iniial nu mai conine entiti, intoarce adresa nul. Exemplu: #include<string.h> #include<iostream.h> void main() { char a[100],b[4]=, ;.,*p; cin.get(a,100); p=strtok(a,b); while (p) { cout<<p<<endl; p=strtok(NULL,b); } } int strcmp(char *sir1,char *sir2); Efect: compar cele dou iruri de caractere. Valoarea returnat este: <0 dac sir1<sir2 =0 dac sir1=sir2 >0 dac sir1>sir2 Funcia face distincie ntre literele mari si literele mici. Compararea irurilor se realizeaz comparnd de la stnga la dreapta caracter cu caracter. Un ir este mai mic dact altul dac figureaz n dicionar inaintea lui. Exemplu: #include<string.h> #include<stdio.h> void main() { char a[100],b[100]; gets(a); gets(b); int k=strcmp(a,b); if (k>0) printf(a>b); else if (k==0) printf(a=b); else printf(a<b); } int stricmp(char *sir1,char *sir2); Efect: are acelai efect ca i strcmp dar nu face diferen ntre literele mari i literele mici.

char *strupr(char *s) Efect: transform un ir de caractere din litere mici n litere mari. Restul caracterelor rmn nemodificate. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=1 crocodil; cout<<strupr(a); //1 CROCODIL } char *strlwr(char *s) Efect: transform un ir de caractere din litere mari n litere mici. Restul caracterelor rmn nemodificate. Exemplu: #include<iostream.h> #include<string.h> void main() { char a[100]=1 CROCODIL; cout<<strupr(a); //1 crocodil } int atoi(char *s) Efect: transform un ir de carcatere ntr-un ntreg (int). Este inclus n biblioteca <stdlib.h>. Exemplu: #include<iostream.h> #include<stdlib.h> void main() { int n; char *s=1234.56; n=atoi(s); cout<<n; // va afisa 1234 } long atol(char *s) Efect: transform un ir de carcatere ntr-un ntreg (long). Este inclus n biblioteca <stdlib.h>. double atof(char *s) Efect: transform un ir de carcatere ntr-un numr real. Este inclus n biblioteca <stdlib.h>. Exemplu: #include<iostream.h> #include<stdlib.h> void main() { float n; char *s=-4521234.56; n=atof(s); cout<<n; // va afisa -4521234.56 } 4

char *itoa(int val, char *sir, int baza) Efect: transform un numar ntreg (int) ntr-un ir de caractere. Baza reprezint baza in care este scris noul numr. Este inclus n biblioteca <stdlib.h>. Exemplu: #include<iostream.h> #include<stdlib.h> void main() { int n=12345; char s[20]; itoa(n,s,10); cout<<s // va afisa sirul 12345 } char *ltoa(long val, char *sir, int baza) Efect: transform un numar ntreg (long) ntr-un ir de caractere. char *ultoa(unsigned long val, char *sir, int baza) Efect: transform un numar ntreg (unsigned long) ntr-un ir de caractere.

Funcii care lucreaz cu caractere


Sunt incluse in biblioteca <ctype.h>. Testeaz dac un cracter primit ca parametru ndeplinete o condiie. Returneaz 0 dac acel caracter nu indeplinete condiia i valoare diferit de 0 dac o ndeplinete. int isalnum(int c); Efect:testeaz dac un caracter este liter sau cifr Exemplu: #include<iostream.h> #include<ctype.h> void main() { char s=y; cout<<isalnum(s); // va afisa o valore diferita de 0 } int isalpha(int c); Efect: testeaz dac un caracter este liter int isdigit(int c); Efect: testeaz dac un caracter este cifr Exemplu: #include<iostream.h> #include<ctype.h> void main() { char s=y; cout<<isdigit(s); // va afisa 0 } 5

int islower(int c); Efect: testeaz dac un caracter este liter mic int isupper(int c); Efect: testeaz dac un caracter este liter mare int isspace(int c); Efect: testeaz dac un caracter este spaiu int isxdigit(int c); Efect: testeaz dac un caracter este cifr n baza 16 Exemplu: #include<iostream.h> #include<ctype.h> void main() { char s=d; cout<<isxdigit(s); // va afisa o valore diferita de 0, deoarece d este o cifra in baza 16 } int toupper(int c); Efect: transform un caracter care este litera mic n liter mare Exemplu: #include<iostream.h> #include<ctype.h> void main() { char s=y; cout<<toupper(s); // va afisa Y } int tolower(int c); Efect: transform un caracter care este litera mare n liter mic Exemplu: #include<iostream.h> #include<ctype.h> void main() { char s=Y; cout<<tolower(s); // va afisa y }

You might also like