Sunteți pe pagina 1din 5

FunctH care lucreaza cu siruri de caractere

Prototipul functiilor care lucreaza cu siruri este In string.h _



1. Functia care returneaza lungimea unui sir: strlen(nume _ sir);

Exp:

char a[lOO]; unsigned int n; n = strlenta);

n = lungimea sirului a (un numar intreg pozitiv ), adica numarul de caractere din care este format sirul a (fara caracterul NULL) _

2. Functia care copiaza sirul de la adresa sursa la adresa destinatie:

a) strcpytdestinatia, sursa);

Exp:

char all OO],b[1 00], *p; strcpytb,a);

p = strcpy(b,a);

unde b este destinatia, iar a este sursa, Deci copiaza a In b inclusiv caracterul NULL, adica realizeaza b= a. a nu se modifica, Returneaza adresa sirului b (retinuta In pointerul p daca este necesar),

b) strncpy( destinatia, sursa, nr max de char copiate);

Exp:

char a[IOO],b[IOO],*p; strncpytb,a,n );

p = strucpytb,a.n);

din sirul a sunt copiate (inlocuite) in sirul b maxim n caractere, incepand cu primul caracter din a_ Daca lungirnea sirului sursa este mai mica dedit n, va fi copiat si caracterul NULL, altfel sirul destinatie nu va fi terminat cu caracterul NULL Functia retumeaza ca rezultat un pointer care indica adresa sirului b (retinuta in pointerul p daca este necesar),

c) stpcpytdestinatia, sursa);

retumeaza un pointer care indica sfarsitul sirului destinatie (adresa sirului destinatie + lungimea sirului sursa).

d) strxfrmfdestlnatia, sursa, n);

din sirul a sunt copiate (inlocuite) in sirul b maxim n-J caractere, incepand cu primul caracter din a_ Functia adauga la sfirsitul caracterelor copiate caracterul NULL (daca acesta nu a fost citit), fara alte caractere dupa acesta. Functia returneaza ca rezultat lungimea sirului b (retinuta intr-o variabila natural a m daca este necesar).

Exp:

char all OO],b[1 00]; unsignedm; strxfrm(b,a,n);

m = strxfrm(b,a,n);

Obs.: sirul a poate fi constants sir de caractere, Exp.:

char b[1 00], *p; strcpy(b," a bcdefg");

p = strcpytb.t'abcdefg");

3. Functia de concatenare (lipire) a doua siruri. La sirul de adresa destinatie concateneaza sirul de adresa sursa inclusiv caracterul NULL

a) strcat( destinatie, sursa);

Exp.:

char all OO],b[1 00], *p; strcaub,a );

p = strcat(b,a);

unde la sirul b este lip it sirul a (si caracterul NULL), lara ca sirul a sa se modifice. Returneaza adresa sirului b (retinuta in pointerul p daca este necesar).

b) strncau destinatie, sursa,n);

Exp:

char a[IOO],b[IOO]*p; strn caub .a ,n );

p = strncat(b,a,n);

unde se concateneaza la sirul b doar maxim n caractere din sirul a(adauga si caracterul NULL). Functia retumeaza adresa de inceput a sirului b (retinuta in pointerul p dad este necesar).

4. Functia de cautare a unui caracter intr-un sir:

a) strchrtnume jdr, ch);

Exp:

char all O]="calculator", *p; strchrta,'!');

p= strchr(a,'I');

cout«p; II 1 cul ator

cautarea se face de la stanga spre dreapta in sirul a. Functia intoarce adresa (retinuta in pointerul p daca este necesar) subsirului care incepe cu prima aparitie a caracterului citit (se termina cu caracterul NULL). Dad nu gaseste caracterul intoarce O.

b) strrchrmumejsir, ch);

Exp:

char a[IO]="calculator", *p; strrchr(a,'I');

p= strrchrt a, '1');

cout«p; Illator

cautarea se face de la dreapta spre stanga in sirul a. Functia intoarce adresa (retinuta in pointerul p daca este necesar) subsirului care incepe cu ultima aparitie a caracterului citit (se termina cu caracterul NULL). Daca nu gaseste caracterul intoarce O.

S. Functia care compara doua siruri, caracter cu caracter, (mai exact codul ASCII al acestora).

a) strcmp(sirl,sir2);

Val 0 area retumata este un intreg:

a) <0 daca s l-csz; b) =0 daca sl=sz; c) >0 daca s l--sz

Exp:

char a( ]="calculator",b( ]="casetofon";

cout«strcmp(a,b); II rezultatul este un numar negativ

b) stricmp(sirl,sir2);

la comparare nu se face diferenta intre litere mari si litere mici Exp:

char a{ ]="calculator",b( ]="CAICULator";

cout«strcmp(a,b); 110

c) strncmp(sirl,sir2,n);

compara primele n caractere din sirurile sir 1 si sir 2

d) strncmpltsh-Lslrz.,n);

compara primele n caractere din sirurile sir 1 si sir2, iar la comparare nu face diferenta intre litere mari si litere mici.

6. Functia prin care toate caracterele sirului sir sunt 'inlocuite de un caracter ch, mai putin caracterul N1RL:

a) strset (sir, ch);

functia retumeaza adresa de inceput a sirului sir (retinuta in pointerul p daca este necesar). Exp.:

char a[20], c, *p; cin=>c; strset (a, c);

p=strset (a, c); cout«a«" "<sp;

strset (a, '*'); cout'<xa;

b) strnset (sir, ch, n);

functia prin care primele n caractere ale sirului sir sunt inlocuite de un caracter ch. Functia retumeaza adresa de inceput a sirului sir (retinuta in pointerul p daca este necesar).

Exp.:

char a[20], c, *p; int n; cin> >n> >c; strnset (a, c, n); p=strset (a, c); cout«a«" "<xp;

strnset (a, '*',3); cout«a;

7. Functia care inverseaza continutul sirului sir si returneaza adresa de inceput a sirului inversat strrev( sir).

8. Functia prin care se verifica daca un sir sir2 este subsir al sirului sir 1.

strstrt sir 1 .sirz);

Exp.:

char Sl[ ]="abcdef', S2[ ]="de", *p; p=strstt'( St,S2);

cout< <p-s 1 II 3

Functia returneaza adresa de la care incepand in s, apare subsirul S2. (retinuta in pointerul p daca este necesar).

9. Functia

strtokf slrusir-);

unde sirul sir, este considerat ca fiind alcaruit din O,1,2, ... .n entitati separate prin unul sau mai multe caractere cu rol de separator, iar sirul sir} ca fiind alcatuit din unul sau mai multe caract ere cu rol de separator. La prima apelare care trebuie sa fie de forma

functia intoarce adresa primului caracter al primei entitati. In plus, dupa prima entitate separatorul este inlocuit automat prin caracterul NULL( cod 0). Urmatoarele apeluri ale functiei sunt de forma

stliok(NULL,sir2);

functia intoarce de fiecare data adresa primului caracter al urmatoarei entitati si dupa ea este adaugat caracterul NULL. In momentul in care sirul ramas nu mai contine entitati, functia intoarce o.

Exp.:

char Sl[ 1= "mama, tata si bunicul", sA ]=" ,", *p; II separatori sunt blank-ul si virgula

p=strtokisi.s-); II returneaza adresa primei entitati - mama

cout< <p< <endl;

while(p)

{p=stI1ok(NULL,S2); II returneaza adresa celei de-a doua entitati - tata, etc.

cout< <p< <endl; }

10. Functia

a) strcspn(sirl,siI'2) retumeaza numarul primelor caractere din sirul sir} (luate consecutiv) care nu apar in sir ;

Exp.:

char Sl[]= "abcdafg", S2[ j='xydtrfku'', S3[ ]=''hgfaljcb'';

cout< stITspn(sl,s2)«endl; II returneaza 3

cout-: stl'cspn(sl,s3); II returneaza 0

b) strspmsir..sir-) retumeaza numarul primelor caractere din sirul sir} (luate consecutiv) care apar in sir».

Exp.:

char s.] ]= "abcdafg", s2f ]="xydtrlku", s3I J=''hdgfaUcb'';

cout-: strspn(sl,s2)«endl; II retumeaza 0

cout'< strspn(st,s3); II retumeaza 7

11. Functia care converteste caract ere mari in caractere mici, si returneaza adresa sirului dat (retinuta in pointerul p dad este necesar).

strlwrtsir);

Exp.:

char s[ ]="ABCDEfg123", *p;

cout«strlwr(s)«endl; II tipareste "abcdefg123"

p= strlwr(s);

cour<xp; II tipareste "abcdefg123"

12. Functia care converteste caractere miei in caractere mari, si returneaza adresa sirului dat (retinuta in pointerul p dad este necesar).

struprtsir);

Exp.:

char s[ ] ="AB Cdefg 1 23", *p;

cout-c-cstrupnsj-c-cendl; II tipareste "ABCDEFG123"

p= strupr(s);

cout-c=p;

II tipareste "ABCDEFG123"

13. Functia

a) strpbrktsirj.sir-];

cauta in sir}, in ordine de la stanga la dreapta, un caracter din sir», si retumeaza adresa (retinuta in pointerul p daca este necesar) primului caracter gasit, oprind cautarea,

Exp.:

char Sl [ ]="abcdefg", S2[ ]="uedk", *p;

p=strpbrkfsj.s-); II p= 81+3

cout«p[O]«endl«p«endl«*p;

I I tipareste d ; defg; d

b) strspntsirj.sir-);

retumeaza numarul de caractere consecutive din sirul sir} (trebuie sa existe primul caracter din sir 1), care se gasesc printre caracterele din sirul sir, (in orice ordine in sirs),

Exp.:

char s 1 []=" abcdefg", s2[]="vbxdvgvcxa"; cout«strspn(sl,s2);

/ / tipareste 4

c) strcspmsirr.siri);

returneaza numarul de caractere consecutive din sirul sir] (trebuie sa nu existe prirnul caracter din sir 1), care nu se gasesc printre caracterele din sirul sir).

Exp.:

char s 1 []=" abcdefg", s2[J="vxdvgvexf'; cout«strcspn(sl,s2);

/ / tipareste 3

Urmatoarele functii de conversie au prototipul in stdlib.h.

14. Functia atof(s) (sau strtodts, *c) unde s= sir, "c=variabila char care retine adresa prirnului caracter nenurneric-care nu poate fi convertit-), converteste un sir catre tipul double. Sunt ignorate caracterele albe.Returneaza 0 daca se intalneste 0 valoare nenumerica,

15. Functia _atold(s) (sau _stI1old(s, *c) unde s= sir, "c=variabila char care retine adresa prirnului caracter nenurneric-care nu poate fi convertit-), converteste un sir catre tipullong double. Sunt ignorate caracterele albe.Returneaza 0 daca se intalneste 0 valoare nenumerica,

16. Functia atoi(s), converteste un sir catre tipul int.Sunt ignorate caracterele albe.Returneaza 0 daca se intalneste 0 valoare nenumerica,

17. Functia atol(s) ( sau strtolts, *c,b) unde s= sir, "c=variabila char care retine adresa prirnului caracter nenurneric-care nu poate fi convertit-, b=8,10,16-baza numerica in care s-a scris sirul-), converteste un sir catre tipul long int. Sunt ignorate caracterele albe.Retumeaza 0 daca se intalneste 0 valoare nenumerica,

18. Functia itoarval, s,b) converteste 0 val 0 are val de tip int scrisa in baza numerica b intr-un sir s.

Returneaza adresa sirului obtinut,

19. Functia ltoatval, s.b) converteste 0 valoare val de tip long int scrisa in baza numerica b intr-un sir

s. Retumeaza adresa sirului obtinut.