Предупреждение делает целое число из указателя без приведения

ожидается "int", но аргумент имеет тип "char *" не знаю, как исправить, любое предложение

#include <stdio.h>

int my_strncmp(char const *s1, char const *s2, int n);

int main (int ac, char **ag) {
    char result;

    if (ac == 4) {
        result = my_strncmp(ag[1], ag[2], ag[3]);
        printf("%d\n", result);
    }   
    return(0);
}
0
0
124
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вам необходимо преобразовать ag[3] (типа char * / string) в целое число.

Взгляните на strtol() и его собратьев. С atoi() существует более простая функция, которая, однако, не такая надежная и универсальная. Вот почему я бы рекомендовал всегда использовать strtol() и др.

Примечание: параметры "n" обычно делаются size_t (без знака) вместо int. (Сравните strncmp()). Тогда вы бы использовали strtoul().

Последний параметр my_strncmp определяется как int n, но когда он вызывается в main, третий параметр имеет тип char *

здесь,

int my_strncmp(char const *s1, char const *s2, int n);

последняя часть - int n

result = my_strncmp(ag[1], ag[2], ag[3]);

но здесь то, что вы передаете ag[3], имеет тип char

надеюсь это поможет..

Другие вопросы по теме