Sunteți pe pagina 1din 3

Cautare cu strchr si strstr

sintaxa strchr
char * strchr ( char * propozitie , char litera );
Exemplu:
char *p,propozitie[10], litera;
p=strchr(propozitie , litera); // p pointer catre prima aparitie a
literei in propozitie.
Sintaxa strstr
strstr(sir, subsir) ;
returneaza un pointer catre prima aparitie a subsirului in sir, in cazul in
care nu gaseste se returneaza 0 (null).
Exemplu de utilizare a functiei strchr
//sa se numere de cate ori apare un caracter intr-un sir
#include<iostream.h>
#include<string.h>
main()
//declarari
{char sir[100],chr,*p;
int k=0;
//citirea sirului
cin.get(sir,256);
//pentru a putea citi un cuvant fara al adauga sirului folosim cin.get fara parametrii
cin.get();
//citim caracterul care vrem sa il cautam
cin>>chr;
//atribuirea prin functia strchr
p=strchr(sir,chr);
//cat timp nu sa terminat sirul si mai gaseste caracterul chr in sir
while (p)
{//maresc un contor
k++;
//trec mai departe sa caut alta aparitie
p++;
//atribuirea prin functia strchr
p=strchr(p,chr);
}
//afisare
cout<<"caracterul "<<chr<<" apare de "<<k<<" ori.";
}
Exemplu de utilizare strstr
//sa se numere de cate ori apare un subsir intr-un sir
#include<iostream.h>
#include<string.h>

main()
//declarari
{char sir[100],subsir[100],*p;
int k=0;
//citirea primului sir
cin.get(sir,256);
//pentru a putea citi al doilea sir fara al combina cu primul folosim cin.get fara
parametrii
cin.get();
//citim subsirul care vrem sa il cautam
cin.get(subsir,256);
//atribuirea prin functia strstr
p=strstr(sir, subsir);
//cat timp nu sa terminat sirul si mai gaseste subsirul in sir
while (p)
{//maresc un contor
k++;
//trec mai departe sa caut alta aparitie
p++;
//atribuirea prin functia strstr
p=strstr(p, subsir);
}
//afisare
cout<<"subsirul "<<subsir<<" apare de "<<k<<" ori.";
}
aplicatie
Se da o propozitie si doua cuvinte x, y. Sa se inlocuiasca in propozitie
cuvintele x cu cuvantul y.
#include<iostream.h>
#include<string.h>
main()
{char x[50],y[50],s[200],aux[200],*p,*q;
cin.get(s,200);
cin.get();
cin.get(x,50);
cin.get();
cin.get(y,50);
p=strstr(s,x);
while(p)
{
if(p!=0) //daca am gasit inlocuiesc x cu y;
{
//punem de o parte restul sirului;
q=p+strlen(x);
strcpy(aux,q);
//scurtam sirul initial;
*p=0;
//alipim noul cuvant;

strcat(s,y);
//punem la loc restul sirului;
strcat(s,aux);
}
//fac o noua cautare;
p=strstr(p,x);
}
cout<<s;
}