ошибка E0167, как исправить?

есть функция:

int Compare(char S[105], int count, int N, int i, int k, int j)
{
    N = strlen(S);
    for (int k = i; k < N; k++)
    {
        if ((S[k] != S[j]) || (k == j))
            count++;
        j--;
    }
    return count;
}

при вызове её

count = Compare(S[105], count, N, i, k, j);

появляется ошибка: E0167 аргумент типа "char" несовместим с параметром типа "char *" как её исправить?


Ответы (1 шт):

Автор решения: Harry

Вы не сказали практически ничего. Ни как объявлена функция, ни как описаны переменные, которые вы ей передаете. Приходится просто догадываться...

Видимо, у вас S — это массив char, функция описана как

Compare(char* S....

или

Compare(char S[]....

В результате она ждет массив char, а вы ей передаете один элемент этого массива — 106-ой... Передавайте ей сам массив.

После того, как вы дополнили вопрос — все остается в силе. Вызывать надо как

Compare(S, ...

И еще — зачем вы сами себя ограничиваете размером массива? Тем более что он нигде не участвует! Как и, кстати говоря, передаваемые ей аргументы! Просто опишите функцию как

int Compare(char S[])
{
    int count, N, i, k, j;
    ....

Так оно короче, понятнее, и не надо создавать липовые переменные в месте вызова функции.

→ Ссылка