Есть ли обратная функция для strstr - PullRequest
15 голосов
/ 28 октября 2009

Я пытаюсь найти функцию, аналогичную strstr, которая ищет подстроку, начиная с конца и заканчивая началом строки.

Ответы [ 17 ]

0 голосов
/ 19 декабря 2013
char * strrstr(char *_Str, char *_SubStr){
    char *returnPointer, *p;

    //find 1st occurence. if not found, return NULL
    if ( (p=strstr(_Str, _SubStr))==NULL)
        return NULL;

    //loop around until no more occurences
    do{
        returnPointer=p;
        ++p;
    }while(p=strstr(p, _SubStr));

    return returnPointer;
}
0 голосов
/ 28 октября 2009

Спасибо за ваши ответы! Есть еще один способ, который пришел с форума MSDN. http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/ed0f6ef9-8911-4879-accb-b3c778a09d94

0 голосов
/ 28 октября 2009

В стандартной библиотеке C ее нет. Возможно, вам удастся найти его в Интернете или написать самостоятельно.

0 голосов
/ 28 октября 2009

Вот один. Тестирование - это упражнение, которое я оставлю вам:)

0 голосов
/ 28 октября 2009

Короче говоря:

Нет - в C-библиотеке нет функции, которая делает то, что вам нужно ..

Но, как уже отмечали другие: писать такую ​​функцию не ракетостроение ...

0 голосов
/ 24 июня 2016
char* strrstr(char * _Str, const char * _SubStr)
{
    const BYTE EQUAL=0;
    int i=0, src_len = strlen(_Str), find_len = strlen(_SubStr),
        tail_count=0;

    for(i=src_len; i>-1; i--)
    {
        if(_Str[i] == _SubStr[0] && tail_count >= find_len)
        {
            if(strncmp(&_Str[i], _SubStr, find_len) == EQUAL)
            {
                return &_Str[i];
            }
        }
        tail_count++;
    }
    return NULL;    
}
0 голосов
/ 28 октября 2009

Я не верю, что в строке c есть lib, но написать свой собственный было бы тривиально. При одном условии вы знаете длину строки или она правильно завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...