Я пытаюсь найти вхождение символов одной строки (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 ().
Назначение неверно. 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)
Других решений пока нет …