использование strchr () дает ошибку

Я пытаюсь найти вхождение символов одной строки (s1) в другую строку (s2).

Это часть моего кода.

for(;i<strlen(s1);i++)
{
int x=strchr(s2,s1[i]);
if(x>0)
count++;
}

Но при компиляции я получаю сообщение об ошибке, указывающее на strchr (), и говорит:

error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive]

Кто-нибудь объяснит, в чем проблема использования функции strchr ().

-2

Решение

Назначение неверно. Strchr не возвращает int, но возвращает адрес первого символа в найденной строке:

int x=strchr(s2,s1[i]);

должно быть:

char* x = strchr(s2, s1[i]);
//         ^ returns char*

Читать руководство

char *strchr(const char *s, int c);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
strchr() а также strrchr() функции
вернуть указатель на соответствующий символ или NULL если персонаж
не найден. Завершающий нулевой байт считается частью
строка, так что если c указан как '\0'эти функции возвращают
указатель на терминатор.

Так что:

if(x>0)

должно быть:

if(x != NULL)

или просто if(x)

2

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

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

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