ошибка 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 шт):
Вы не сказали практически ничего. Ни как объявлена функция, ни как описаны переменные, которые вы ей передаете. Приходится просто догадываться...
Видимо, у вас S — это массив char, функция описана как
Compare(char* S....
или
Compare(char S[]....
В результате она ждет массив char, а вы ей передаете один элемент этого массива — 106-ой... Передавайте ей сам массив.
После того, как вы дополнили вопрос — все остается в силе. Вызывать надо как
Compare(S, ...
И еще — зачем вы сами себя ограничиваете размером массива? Тем более что он нигде не участвует! Как и, кстати говоря, передаваемые ей аргументы! Просто опишите функцию как
int Compare(char S[])
{
int count, N, i, k, j;
....
Так оно короче, понятнее, и не надо создавать липовые переменные в месте вызова функции.