Im пытается написать функцию, которая возвращает индекс первого появления подстроки внутри строки.неверный счет с использованием strstr
как поиск небоскреба для «СМ» вернется 2.
Похоже, strstr делают свою работу, потому что после того, как время цикла она выводит правильный первый символ подстроки, но оно не считая правильно и возвращение правильного внутр.
Возможно, это неправильно настроено, поскольку я передаю массив функции и получил много ошибок, пытающихся использовать вложенные циклы, поэтому я попытался использовать цикл while, который компилирует, но не выводит правильно.
Я все еще довольно новичок в указателях и передаю их в качестве аргументов, поэтому там может быть проблема.
все, что угодно!
int findSubstring(char *s, char substring[])
{
int j = 1;
char* strPtr = NULL;
while (strPtr == NULL)
{
strPtr = strstr(s, substring);
if (strPtr != NULL)
break;
j++;
}
cout << *strPtr << endl;
cout << "The substring begins at element: " << j << endl;
return j;
}
return (int) (strPtr - s); Не могли бы вы объяснить мне эту строку? Этот код работает именно так, как я этого хочу, но я хотел бы знать, почему я его использую! –
Указатели символов содержат адреса символов. Принимая разницу в двух указателях символов, вы узнаете, сколько персонажей вы перемещаете, переходя от одного к другому. Поскольку 'strPtr' указывает на один из символов в' s', он сообщает вам количество символов * в этой строке *, которое вы прошли. Отбрасывая разницу в целое число, убедитесь, что ваш тип возвращаемого значения верен. – John
Спасибо, часть каста показалась очевидной, но я не получил вычитание указателя. Теперь это имеет смысл. –