Существует ли многосимвольная версия strchr () в стандартных библиотеках C? - PullRequest
7 голосов
/ 15 июля 2010

В c, если я хочу найти строку для определенного символа, я могу просто сделать следующее

char *p;
p = (char *)strchr(buffer,'(');
if(p){
    ....

, но что если я хочу найти более одного символа (или диапазон символов) дляпример "любая цифра".Я знаю, что мог бы сделать что-то вроде

char *p=0;
char *i;
for(i=buffer;*i!='\0';i++){
    if(*i >= '0' && *i <=9){
        p=i;
    }
}

if(p){
    ...

при условии правильно завершенной строки и т. Д. Но есть ли стандартная библиотечная функция, которая уже предоставляет эту функцию (надеюсь, более безопасно)

1 Ответ

20 голосов
/ 15 июля 2010

А как насчет strpbrk ?Похоже, это соответствует вашему счету.

const char * strpbrk ( const char * str1, const char * str2 );

"Возвращает указатель на первое вхождение в str1 любого из символов, которые являются частью str2, или нулевой указатель, если совпадений нет."

РЕДАКТИРОВАТЬ: ссылка на сайт C ++, но strpbrk является частью стандартной библиотеки C.

...