Namespaces
Variants

strpbrk

From cppreference.net
< c ‎ | string ‎ | byte
Определено в заголовочном файле <string.h>
char * strpbrk ( const char * dest, const char * breakset ) ;
(1)
/*QChar*/ * strpbrk ( /*QChar*/ * dest, const char * breakset ) ;
(2) (начиная с C23)
1 ) Сканирует байтовую строку с завершающим нулем, на которую указывает dest , на наличие любого символа из байтовой строки с завершающим нулем, на которую указывает breakset , и возвращает указатель на этот символ.
2) Обобщённая по типам функция, эквивалентная (1) . Пусть T будет неквалифицированным символьным типом объекта.
  • Если dest имеет тип const T * , возвращаемый тип будет const char * .
  • Иначе, если dest имеет тип T * , возвращаемый тип будет char * .
  • Иначе поведение не определено.
Если макрос-определение каждой из этих обобщённых функций подавлено для доступа к реальной функции (например, если используется ( strpbrk ) или указатель на функцию), становится видимым объявление реальной функции (1) .

Поведение не определено, если либо dest или breakset не является указателем на байтовую строку, завершающуюся нулевым символом.

Содержание

Параметры

dest - указатель на анализируемую нуль-терминированную байтовую строку
breakset - указатель на нуль-терминированную байтовую строку, содержащую символы для поиска

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

Указатель на первый символ в dest , который также присутствует в breakset , или нулевой указатель, если такого символа не существует.

Примечания

Название расшифровывается как "string pointer break" (указатель разрыва строки), поскольку функция возвращает указатель на первый из символов-разделителей ("break").

Пример

#include <stdio.h>
#include <string.h>
int main(void)
{
    const char* str = "hello world, friend of mine!";
    const char* sep = " ,!";
    unsigned int cnt = 0;
    do
    {
       str = strpbrk(str, sep); // найти разделитель
       if(str) str += strspn(str, sep); // пропустить разделитель
       ++cnt; // увеличить счетчик слов
    }
    while(str && *str);
    printf("There are %u words\n", cnt);
}

Вывод:

There are 5 words

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.24.5.4 Функция strpbrk (стр: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.24.5.4 Функция strpbrk (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.24.5.4 Функция strpbrk (стр: 368)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.21.5.4 Функция strpbrk (стр: 331)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.11.5.4 Функция strpbrk

Смотрите также

возвращает длину максимального начального сегмента, состоящего
только из символов, не найденных в другой байтовой строке
(функция)
находит первое вхождение символа
(функция)
находит следующую лексему в байтовой строке
(функция)
C++ documentation для strpbrk