Appearance
strchr
cpp
#include <cstring>
char* strchr(char* s, char c);strchrvine de la string + character.- Efect: cauta prima aparitie a caracterului
cin siruls. - Returneaza adresa unde a gasit caracterul, sau
NULLdaca nu exista.
Exemplu cu tabel
Daca s = "abecedar":
| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| s | a | b | e | c | e | d | a | r | \0 |
| apel | rezultat | sir de la acea adresa |
|---|---|---|
strchr(s, 'e') | s + 2 | "ecedar" |
strchr(s, 'a') | s + 0 | "abecedar" |
strchr(s, 'z') | NULL | — |
cpp
char* p = strchr(s, 'e'); // p = s + 2
int poz = p - s; // poz = 2A doua aparitie
cpp
char* p1 = strchr(s, 'e'); // prima aparitie: s + 2
char* p2 = strchr(p1 + 1, 'e'); // a doua aparitie: s + 4Sfat
Avanseaza cu + 1 de la adresa gasita pentru a cauta urmatoarea aparitie.
Verificare existenta
cpp
if (strchr(s, 'x') != NULL) // 'x' apare in sir
if (strchr(s, 'x') == NULL) // 'x' nu apare in sirCum functioneaza intern
cpp
char* strchr(char* s, char c)
{
int i;
for (i = 0; s[i] != '\0'; i++)
if (s[i] == c)
return s + i;
return NULL;
}Exemplu complet
cpp
#include <iostream>
#include <cstring>
using namespace std;
char s[100];
char* p;
int pozitie;
int main()
{
cin >> s;
p = strchr(s, 'a');
pozitie = p - s;
if (p != NULL)
{
cout << "Primul 'a' la pozitia: " << pozitie;
}
else
{
cout << "Caracterul nu exista";
}
return 0;
}Intrare:
abecedarAfisare:
Primul 'a' la pozitia: 0Cum verific ca un caracter este vocala ?
Observatie
Un caracter este vocala cand este a, e, i, o sau u.
cpp
#include <iostream>
#include <cstring>
using namespace std;
char vocale[] = "aeiouAEIOU";
char c;
bool esteVocala;
int main()
{
cin >> c;
esteVocala = strchr(vocale, c) != NULL;
if (esteVocala)
{
cout << "Este vocala";
}
else
{
cout << "Nu este vocala";
}
return 0;
}Intrare:
eAfisare:
Este vocalaToate aparitiile unui caracater intr-un cuvant
cpp
#include <iostream>
#include <cstring>
using namespace std;
char cuv[100], c;
char* p;
int main()
{
cin >> cuv >> c;
p = strchr(cuv, c);
while (p != NULL)
{
cout << p - cuv << " ";
p = strchr(p + 1, cuv);
}
return 0;
}Intrare:
abecedarele
eAfisare:
2 4 8 10