Использование функции C ++ strstr для удаления части подстроки, которую вы ищете

У меня есть вопрос об упражнении в классе, который поставил меня в тупик: написать функцию с именем strCut, которая получает два строковых параметра в стиле C и шаблон. Если строка шаблона содержится в s, то функция модифицирует s так, что первое вхождение шаблона, которое появляется в s, удаляется из s. Чтобы выполнить поиск по шаблону, используйте предопределенную функцию strstr.

Вот мой код на данный момент.

void strCut(char *s, char *pattern)
{
char *x;
char *y;
x = strstr(s, pattern);
cout << x; // testing what x returns
}

int main()
{

char s[100];        // the string to be searched
char pattern[100];  // the pattern string
char response;           // the user's response (y/n)

do
{
cout << "\nEnter the string to be searched ==> ";
cin.getline(s, 100);
cout << "Enter the pattern ==> ";
cin.getline(pattern, 100);
strCut(s, pattern);
cout << "\nThe cut string is \"" << s << '"' << endl;
cout << "\nDo you want to continue (y/n)? ";
cin >> response;
cin.get();
} while (toupper(response) == 'Y');

Любая помощь очень ценится. Спасибо

0

Решение

Функция может быть написана, например, следующим образом

char * strCut( char *s, const char *pattern )
{
if ( char *p = std::strstr( s, pattern ) )
{
char *q = p + std::strlen( pattern );
while ( *p++ = *q++ );
}

return s;
}

Или может быть использована функция std::memmove вместо внутреннего цикла.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]