Функция strchr
Функция strchr ищет первое вхождение символа в C-строке
(строке в стиле языка C, то есть массиве символов,
завершающемся нулевым символом '\0').
В первый параметр мы передаем указатель на строку,
в которой выполняется поиск, а во второй - искомый символ.
Функция возвращает указатель на первое найденное вхождение
символа в строке или нулевой указатель nullptr,
если символ в строке отсутствует.
Функция объявлена в заголовочном файле <cstring>.
Обратите внимание: функция ищет именно символ, а не подстроку.
Также учитывается и завершающий нулевой символ строки.
Синтаксис
char* strchr(const char* str, int ch)
Пример
Давайте найдем первое вхождение символа 'c' в строке
"abcde" и выведем остаток строки, начиная с найденного символа:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str = "abcde";
const char* res = strchr(str, 'c');
if (res != nullptr) {
cout << res << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"cde"
Пример
Давайте попробуем найти символ 'z', которого нет в строке
"abcde". В этом случае функция вернет нулевой указатель:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str = "abcde";
const char* res = strchr(str, 'z');
if (res != nullptr) {
cout << res << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"not found"
Пример
С помощью функции strchr можно определить позицию символа
в строке. Для этого нужно вычесть из найденного указателя
указатель на начало строки:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str = "abcde";
const char* res = strchr(str, 'd');
if (res != nullptr) {
cout << res - str << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
3