Spec-Zone.ru › C

strstr

Определено в заголовочном файле <string.h>
char *strstr( const char *str, const char *substr );
(1)
/*QChar*/ *strstr( /*QChar*/ *str, const char *substr );
(2) (с C23)
1) Находит первое вхождение нуль-терминированной байтовой строки, на которую указывает substr, в нуль-терминированной байтовой строке, на которую указывает str. Завершающие нулевые символы не сравниваются.
2) Функция общего типа, эквивалентная (1). Пусть T — тип неопределённого объекта символа.
  • Если str имеет тип const T*, возвращаемый тип — const char*.
  • В противном случае, если str имеет тип T*, возвращаемый тип — char*.
  • В противном случае, поведение не определено.
Если макроопределение каждой из этих обобщённых функций подавлено для доступа к фактической функции (например, если используется (strstr) или указатель на функцию), фактическое объявление функции (1) становится видимым.

Поведение не определено, если либо str, либо substr не является указателем на нуль-терминированную байтовую строку.

Параметры

str - указатель на нуль-терминированную байтовую строку для проверки
substr - указатель на нуль-терминированную байтовую строку для поиска

Возвращаемое значение

Указатель на первый символ найденной подстроки в str, или нулевой указатель, если такая подстрока не найдена. Если substr указывает на пустую строку, возвращается str.

Пример

#include <string.h>
#include <stdio.h>
 
void find_str(char const *str, char const *substr)
{
    char *pos = strstr(str, substr);
    pos ? printf("found the string '%s' in '%s' at position %td\n",
                 substr, str, pos - str)
        : printf("the string '%s' was not found in '%s'\n",
                 substr, str);
}
 
int main(void)
{
    char *str = "one two three";
    find_str(str, "two");
    find_str(str, "");
    find_str(str, "nine");
    find_str(str, "n");
 
    return 0;
}

Вывод:

found the string 'two' in 'one two three' at position 4
found the string '' in 'one two three' at position 0
the string 'nine' was not found in 'one two three'
found the string 'n' in 'one two three' at position 1

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.24.5.7 Функция strstr (с. 269)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.24.5.7 Функция strstr (с. 369)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.21.5.7 Функция strstr (с. 332)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.11.5.7 Функция strstr

См. также

strchr
находит первое вхождение символа
(функция)
strrchr
находит последнее вхождение символа
(функция)
Документация C++ для strstr

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/byte/strstr

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API