9. Căutarea într-un şir

a.) Funcţia strchr

char *strchr(const char *s, int c);

Descriere

Caută prima apariţie a caracterului c în şirul s. Căutarea se face de la stânga

la dreapta. Caracterul nul este considerat ca făcând parte din şir.

Valoare returnată

Funcţia strchr returnează adresa primei apariţii a caracterului c în şir sau o

expresie de tip char* cu valoarea 0 (null).

Exemplu: Se citeşte un şir de caractere şi un caracter. Căutăm caracterul citit în şir,

în cazul în care îl găsim afişăm poziţia în şir unde se găseşte acest caracter, în cazul

în care caracterul nu se găseşte în şir vom afişa un mesaj.

//CAUTARE CARACTER

#include <iostream.h> 

#include <string.h>

#include <conio.h>

void main()

{char sir[50],*p,c;

cout<<"introduceti sir:"; cin>>sir;

cout<<"introduceti caracterul cautat:"; cin>>c;

p=strchr(sir,c); //cauta caracterul c in sir

if(p)

cout<<c<<" se gaseste pe pozitia "<<(p-sir)<<" in sir"; //afiseaza pozitia din sir

else

cout<<c<<" nu se gaseste in sir";

getch();

}

Observaţie:

Am determinat poziţia caracterului găsit în şir scăzând din adresa acestuia,

adresa de început a şirului (p-sir). Astfel am obţinut numărul de elemente cuprinse

între cele două adrese.


b.) Funcţia strrchr

char *strrchr(const char *s, int c);

Are acelaşi rol ca şi funcţia strchr, dar căutarea caracterului c se face de la dreapta

la stânga.

 //CAUTARE CARACTER

#include <iostream.h>

#include <string.h>

#include <conio.h>

void main()

{char sir[50],*p,c;

cout<<"introduceti sir:"; cin>>sir;

cout<<"introduceti caracterul cautat:"; cin>>c;

p=strchr(sir,c); //cauta caracterul c in sir

if(p)

cout<<c<<" se gaseste pe pozitia "<<(p-sir)<<" in sir"; //afiseaza pozitia din sir

else

cout<<c<<" nu se gaseste in sir";

getch();

}


c.) Funcţia strstr

char *strstr(const char *s1, const char *s2);

Descriere

Caută prima apariţie a subşirului s2 în cadrul şirului s1. Căutarea se face de la stânga la dreapta.

Valoarea returnată

Funcţia returnează adresa elementului din s1, unde începe subşirul s2.

Dacă s2 nu apare în şirul s1, returnează o expresie de tip char* cu valoarea 0 (null).

Exemplu: Se citesc două şiruri de caractere şir1 şi şir2. Dacă şir2 este subşir al lui

şir1 se va afişa poziţia în şir1 unde se gaseşte. În caz contrar se afişează un mesaj.

//CAUTARE SIR

#include <iostream.h> 

#include <string.h>

#include <conio.h>

void main()

{char sir1[50],sir2[50],*p;

cout<<"introduceti sir1:"; cin>>sir1;

cout<<"introduceti sir2:"; cin>>sir2;

p=strstr(sir1,sir2);

if(p)

cout<<sir2<<" se gaseste pe pozitia "<<(p-sir1)<<" in sir";

else

cout<<sir2<<" nu se gaseste in sir1";

getch();

}


Înapoi                                                                                                                                     Înainte

Informatica e uşoară dacă o iei pas cu pas!
Creat cu Webnode
Creați un site gratuit! Acest site a fost realizat cu Webnode. Creați-vă propriul site gratuit chiar azi! Începeți