2015-11-19 2 views
0

Я уже прочитал несколько сообщений об этом, но я по-прежнему не могу исправить свой код.Подстрочное значение не является ни массивом, ни указателем, ни вектором (позиции char)

int numericValue(char s, int i) { 
    if (strcmp(s[i], "$") == 0) 
     return 0; 
    else 
     return value(s[i]) + numericValue(s, i + 1); 
} 

Это мой код, и если я изменю int numericValue(char s, int i) для int numericValue(char *s, int i) У меня есть это предупреждение:

передавая аргумент 1 из «» STRCMP делает указатель из целого числа без приведения [-Wint преобразования] ,

Что мне делать?

+2

'cad' не является массивом, поэтому вы не можете использовать обозначение массива. Вы хотите, чтобы pas 'char *' в 'valorNumerico' –

+1

. Пожалуйста, добавьте строку кода, где вы называете' valorNumerico' (изначально) –

+1

... далее следует 'if (cad [i] == '$')' и удалите все ненужные вещи «сравнения». –

ответ

0

Если вы просто хотите, чтобы сравнить два символа использовать двойной знак равенства (==), как показано ниже, и против тех одинарных кавычек знака доллара, как символьные литералы заключаются в одинарных кавычках,

int numericValue(char* s, int i) { 
if (s[i] == '$') 
    return 0; 
else 
    return value(s[i]) + numericValue(s, i + 1); 
} 

Один будет использовать STRCMP для сравнения двух строк, но в вашем случае вы передаете символ в strcmp в качестве первого аргумента, который является несоответствием. См. Ниже подпись подписи strcmp:

int strcmp(const char *s1, const char *s2); 
Смежные вопросы

 Смежные вопросы