functii string

23

Click here to load reader

Upload: iancu-jianu

Post on 23-Jul-2015

178 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Functii String

1. cin.get(sir, nr, ch) – se citesc de la tastatura mai multe caractere , inclusiv caracterele albe, care vor fi scrise in variabil sir pana cand:

a. au fost citite nr-1 caractereb. a fost intalnit caracterul ch cu rol de delimitator (nu va fi scris in variabila sir).

Parametrul ch este optional. Functia poate avea doar doi parametric caz in caz citirea se va face pana la intalnirea caracterului de linie noua (Enter).

Ex:#include<iostream.h>#include<string.h>char sir[10];void main(){cin.get(sir,5,'z'); //daca se introduce “abracadabra” se va afisa “abra”cout<<sir;}

#include<iostream.h>#include<string.h>char sir[10];void main(){cin.get(sir,5,'r'); //daca se introduce “abracadabra” se va afisa “ab”cout<<sir;}

#include<iostream.h>#include<string.h>char sir[10];void main(){cin.get(sir,15,'z'); //daca se introduce “abracadabra” se va afisa “abracadabra”cout<<sir;}

2. cin.get() – are rolul de a descarca din fluxul de date ultimul caracter citit (delimitatorul) care ar impiedica efectuarea unei a doua operatii de citire de la tastatura utilizand functia cin.get() cu parametri.

#include<iostream.h>#include<string.h>char sir1[10], sir2[10];void main(){cin.get(sir1,10); //daca se introduce “alfa”, apoi enter, apoi “beta” se va afisa “alfa”cin.get(sir2,10);

Page 2: Functii String

cout<<sir1<<" "<<sir2;}

#include<iostream.h>#include<string.h>char sir1[10], sir2[10];void main(){cin.get(sir1,10); //daca se introduce “alfa”, apoi enter, apoi “beta” se va afisa “alfa beta”cin.get();cin.get(sir2,10);cout<<sir1<<" "<<sir2;}

3. strlen(sir) – returneaza lungimea unui sir de caractere (caractere printabile), adica un numar intreg.

#include<iostream.h>#include<string.h>char sir[100];void main(){cin.get(sir,100); //daca se introduce “abracadabra” se va afisa 11cout<<strlen(sir);}

4. strcpy(sird, sirs) – sunt copiate din sirul sursa sirs in sirul destinatie sird toate caracterele, inclusive caracterul NULL. Functia are ca rezultat adresa de inceput a sirului destinatie.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); //se citeste “abracadabra”cin.get();cin.get(sir2, 100); //se citeste “elev”strcpy(sir1, sir2);cout<<sir1<<" "<<sir2; //se afiseaza “elev elev”}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main()

Page 3: Functii String

{cin.get(sir1,100); // se citeste “abracadabra”

strcpy(sir1+2, sir1+5);cout<<sir1; //se afiseaza “abadabra”}

5. stpcpy(sird, sirs) – sunt copiate din sirul sursa sirs in sirul destinatie sird toate caracterele, inclusive caracterul NULL. Functia are ca rezultat adresa de sfarsit a sirului destinatie.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); //se citeste “abracadabra”cin.get();cin.get(sir2, 100); //se citeste “elev”strcpy(sir1, sir2);cout<<sir1<<" "<<sir2; //se afiseaza “elev elev”}

6. strncpy(sird, sirs, n) – sunt copiate din sirul sursa sirs in sirul destinatie sird maxim n caractere, incepand cu primul caracter. Daca lungimea sirului sursa este mai mica decat n, va fi copiat si caracterul NULL (functia fiind echivalenta cu strcpy), altfel sirul destinatie nu va fi terminat cu caracterul NULL. Functia are ca rezultat adresa de inceput a sirului destinatie.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100);// se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “elev”

strncpy(sir1, sir2, 3);cout<<sir1<<" "<<sir2; // se afiseaza “eleacadabra elev”}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main()

Page 4: Functii String

{cin.get(sir1,100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “elev”

strncpy(sir1, sir2, 13);cout<<sir1<<" "<<sir2; // se afiseaza “elev elev”}

7. strxfrm(sird, sirs, n) – sunt copiate din sirul sursa sirs in sirul destinatie sird maxim n-1 caractere, incepand cu primul caracter. Functia adauga la sfarsitul caracterelor copiate caracterul NULL. Daca lungimea sirului sursa este mai mica decat n-1, va fi copiat tot sirul sursa, dar nu si alte caractere. Functia are ca rezultat lungimea sirului obtinut in urma copierii.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “elev”

strxfrm(sir1, sir2, 3);cout<<sir1<<" "<<sir2; // se afiseaza “el elev”}

8. strcmp(sir1, sir2) – compara cele doua siruri de caractere. Daca sunt identice rezultatul este 0. Daca sir1 este mai mare decat sir2 rezultatul este pozitiv. Daca sir1 este mai mic decat sir2 rezultatul este negativ.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elev”

cout<<strcmp(sir1, sir2); // se afiseaza 0}

#include<iostream.h>#include<string.h>

Page 5: Functii String

char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elevat”

cout<<strcmp(sir1, sir2); // se afiseaza o valoare negativa}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elEv”

cout<<strcmp(sir1, sir2); // se afiseaza o valoare pozitiva}

9. stricmp(sir1, sir2) – compara cele doua siruri de caractere. Daca sunt identice rezultatul este 0. Daca sir1 este mai mare decat sir2 rezultatul este pozitiv. Daca sir1 este mai mic decat sir2 rezultatul este negativ. Nu face diferenta intre literele mari si literele mici.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elEv”

cout<<stricmp(sir1, sir2); // se afiseaza 0}

10. strncmp(sir1, sir2, n) – compara primele n caractere din cele doua siruri de caractere. Daca sunt identice rezultatul este 0.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main()

Page 6: Functii String

{cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elevat”

cout<<strncmp(sir1, sir2, 4); // se afiseaza 0}

11. strncmpi(sir1, sir2, n) – compara primele n caractere din cele doua siruri de caractere. Daca sunt identice rezultatul este 0. Nu face diferenta intre literele mari si literele mici.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “elEv”

cout<<strncmpi(sir1, sir2, 4); // se afiseaza 0}

12. strcat(sird, sirs) – alipeste sirul sursa sirs la sirul destinatie sird. Functia are ca rezultat adresa de inceput a sirului destinatie.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “Ana”cin.get();cin.get(sir2, 100); // se citeste “Maria”

strcat(sir1, sir2);cout<<sir1<<" "<<sir2; // se afiseaza “AnaMaria Maria”}

13. strncat(sird, sirs, n) – sunt adaugate din sirul sursa sirs la sirul destinatie sird maxim n caractere. Functia adauga la sfarsitul caracterelor adaugte cracterul NULL. Daca n este mai mare decat lungimea sirului sursa se va adauga tot sirul sursa, dar nu si alte caractere. Functia are ca rezultat adresa de inceput a sirului destinatie.

Page 7: Functii String

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”cin.get();cin.get(sir2, 100); // se citeste “abracadabra”

strncat(sir1, sir2, 4);cout<<sir1<<" "<<sir2; // se afiseaza “elevabra abracadabra”}

14. strset(sir, ch) – sirul sir care este parcurs incepand cu primul caracter, pana la sfarsitul lui, fiecare caracter fiind inlocuit cu caracterul ch mai putin caracterul NULL.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”strset(sir1, ‘a’);cout<<sir1; // se afiseaza “aaaa”}

15. strnset(sir, ch, n) – in sirul sir sunt parcurse primele n caractere incepand cu primul caracter, dar nu mai mult decat lungimea sirului, fiecare caracter fiind inlocuit cu caracterul ch. Daca n este mai mare sau egal cu lungimea sirului, functia va avea acelasi efect ca si strset.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”strnsetcat(sir1, ‘a’, 2);cout<<sir1; // se afiseaza “aaev”}

16. strrev(sir) – functia inverseaza continutul sirului sir. Functia are ca rezultat adresa de inceput a sirului rezultat.

#include<iostream.h>

Page 8: Functii String

#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1,100); // se citeste “elev”strrev(sir1);cout<<sir1; // se afiseaza “vele”}

Functiile 1 – 16 necesita biblioteca string.h.

17. tolower(ch) – transforma litera mare in litera mica.

#include<iostream.h>#include<string.h>#include<ctype.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “ELEV”cout<<(char)tolower(sir1[1]); // se afiseaza “l”

}

18. toupper(ch) – transforma litera mica in litera mare.

#include<iostream.h>#include<string.h>#include<ctype.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “elev”cout<<(char)toupper(sir1[1]); // se afiseaza “L”

}

19. strlwr(sir) – in sirul de caractere sir, transforma literele mari in litere mici, restul caracterelor ramanand nemodificate.

#include<iostream.h>#include<string.h>#include<ctype.h>char sir1[100], sir2[100];void main(){

Page 9: Functii String

cin.get(sir1, 100); // se citeste “ELEV”strlwr(sir1);cout<<sir1; // se afiseaza “elev”

}

20. strupr(sir) – in sirul de caractere sir, transforma literele mici in litere mari, restul caracterelor ramanand nemodificate.

#include<iostream.h>#include<string.h>#include<ctype.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “elev”strupr(sir1);cout<<sir1; // se afiseaza “ELEV”

}

Functiile 17 – 20 necesita biblioteca ctype.h.

21. strchr(sir, ch) – cauta prima aparitie a caracterului ch in sirul sir. Daca il gaseste rezultatul va fi pozitiv, daca nu rezultatul va fi negativ. Functia are ca rezultat adresa primei aparitii a caracterului in sir.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cout<<strchr(sir1, 'c'); // se afiseaza “cadabra”

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cout<<strchr(sir1, 'z'); // nu se afiseaza nimic}

Page 10: Functii String

22. strrchr(sir, ch) – cauta ultima aparitie a caracterului ch in sirul sir. Daca il gaseste rezultatul va fi pozitiv, daca nu rezultatul va fi negativ. Functia are ca rezultat adresa primei aparitii a caracterului in sir.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cout<<strrchr(sir1, 'b'); // se afiseaza “bra”

}

23. strstr(sir, sb) – cauta prima aparitie a subsirului sb in sirul sir. Daca il gaseste returneaza segmental din sir care incepe cu prima aparitie a subsirului in sir. Daca nu il gaseste returneaza NULL.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cout<<strstr(sir1, “bra”); // se afiseaza “bracadabra”

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cout<<strstr(sir1, “bri”); // nu se afiseaza nimic

}

24. strspn(sir1, sir2) – functia are ca rezultat numarul de caractere consecutive din sirul sir1 (incepand cu primul caracter), care se gasesc printre caracterele din sirul sir2.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main()

Page 11: Functii String

{cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “cabana”

cout<<strspn(sir1, sir2); // se afiseaza 2

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “bumbac”

cout<<strspn(sir1, sir2); // se afiseaza 2

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “berbec”

cout<<strspn(sir1, sir2); // se afiseaza 0

}

25. strcspn(sir1, sir2) – functia are ca rezultat numarul de caractere consecutive din sirul sir1 (incepand cu primul caracter), care nu se gasesc printre caracterele din sirul sir2.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();

Page 12: Functii String

cin.get(sir2, 100); // se citeste “cabana”

cout<<strcspn(sir1, sir2); // se afiseaza 0

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “bumbac”

cout<<strcspn(sir1, sir2); // se afiseaza 0

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “berbec”

cout<<strcspn(sir1, sir2); // se afiseaza 1

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “zumzet”

cout<<strcspn(sir1, sir2); // se afiseaza 11

}

Page 13: Functii String

26. strpbrk(sir1, sir2) – furnizeaza ca rezultat adresa primului caracter din sirul sir1 care se gaseste si in sirul sir2. Daca niciun caracter din sirul sir1 nu se gaseste printre caracterele sirului sir2, functia are ca rezultat adresa nula.

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “cabana”

cout<<strpbrk(sir1, sir2); // se afiseaza “abracadabra’

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “berbec”

cout<<strspn(sir1, sir2); // se afiseaza “bracadabra”

}

#include<iostream.h>#include<string.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “abracadabra”cin.get();cin.get(sir2, 100); // se citeste “zumzet”

cout<<strspn(sir1, sir2); // nu se afiseaza nimic

}

27. strtok(sir1, sir2) – sirul sir2 este un sir de caractere care pot fi folosite ca separatori, iar sirul sir1 este format din mai multe entitati separate prin unul dintre separatorii din sirul sir2. Functia inlocuieste separatorii prin caracterul NULL si

Page 14: Functii String

furnizeaza ca rezultat adresa primului caracter al primei entitati. Pentru a gasi urmatoarea entitate din sirul sir1, apelare functiei se va face cu strtok(NULL, sir2).

#include<iostream.h>#include<string.h>char sir1[100], sir2[100], *p;void main(){cin.get(sir1, 100); // se citeste “Azi, Ana cumpara de la piata: mere, pere, gutui”

p=strtok(sir1, " ,:");cout<<p<<endl; // se afiseaza “Azi”while(p){p=strtok(NULL," ,:");cout<<p<<endl;} // se afiseaza celelalte cuvinte: Ana

cumparadelapiatamereperegutui

}

Functiile 21 – 27 necesita biblioteca string.h.

28. atoi(sir) – converteste sirul de caractere sir intr-o valoare numerica intreaga.

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “1234”cout<<atoi(sir1); // se afiseaza 1234}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){

Page 15: Functii String

cin.get(sir1, 100); // se citeste “1234567”cout<<atoi(sir1); // se afiseaza o valoare eronata}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “12.34”cout<<atoi(sir1); // se afiseaza 12}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “12n34”cout<<atoi(sir1); // se afiseaza 12}

29. atol(sir) – converteste sirul de caractere sir intr-o valoare numerica intreaga de tip long

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “1234567”cout<<atoi(sir1); // se afiseaza 1234567}

30. atof(sir) – converteste sirul de caractere sir intr-o valoare numerica reala

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “12.34”

Page 16: Functii String

cout<<atoi(sir1); // se afiseaza 12.34}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “-12.34”cout<<atof(sir1); // se afiseaza -12.34}

#include<iostream.h>#include<string.h>#include,stdlib>char sir1[100], sir2[100];void main(){cin.get(sir1, 100); // se citeste “12.3n45”cout<<atof(sir1); // se afiseaza 12.3}

31. itoa(n, sir, b) – converteste o valoare numerica n exprimata in baza de numeratie b in sirul de caractere sir.

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];int n;void main(){cin>>n; // se citeste 1234itoa(n, sir1, 10);cout<<sir1; // se afiseaza “1234”}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];int n;void main(){cin>>n; // se citeste 16

Page 17: Functii String

itoa(n, sir1, 10);cout<<sir1; // se afiseaza “16”}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];int n;void main(){cin>>n; // se citeste 16itoa(n, sir1, 2);cout<<sir1; // se afiseaza “10000”}

32. ltoa(n, sir, b) – converteste o valoare numerica n de tip long exprimata in baza de numeratie b in sirul de caractere sir.

#include<iostream.h>#include<string.h>#include,stdlib>char sir1[100], sir2[100];long n;void main(){cin>>n; // se citeste 1234567itoa(n, sir1, 10);cout<<sir1; // se afiseaza “1234567”}

33. ecvt(n, m, &p, &s) – converteste o valoare numerica n de tip real. Parametrul m precizeaza numarul de caractere ale sirului. Daca numarul are mai putine cifre decat m se va complete la dreapta cu caracterul 0 pana se obtin cele m caracatere. Functia furnizeaza prin numele ei adresa de inceput a sirului de caractere, prin parametrul p pozitia punctului zecimal si prin parametrul s semnul (0 pentru pozitiv, si 1 pentru negativ).

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];float n;int p, s;void main(){

Page 18: Functii String

cin>>n; // se citeste “-12.34”cout<<ecvt(n, 6, &p, &s); // se afiseaza 123400cout<<" "<<p<<" "<<s<<endl; // se afiseaza 2 1}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];float n;int p, s;void main(){cin>>n; // se citeste “12.34”cout<<ecvt(n, 6, &p, &s); // se afiseaza 123400cout<<" "<<p<<" "<<s<<endl; // se afiseaza 2 0}

#include<iostream.h>#include<string.h>#include<stdlib.h>char sir1[100], sir2[100];float n;int p, s;void main(){cin>>n; // se citeste “12.34”cout<<ecvt(n, 2, &p, &s); // se afiseaza 12cout<<" "<<p<<" "<<s<<endl; // se afiseaza 2 0}

Functiile 28 – 33 necesita biblioteca stdlib.h.