警告会从指针产生整数而不进行强制转换

时间:2018-10-31 11:44:19

标签: c

预期为'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);
}

3 个答案:

答案 0 :(得分:3)

您需要将ag[3](类型为char * /字符串)转换为整数。

看看strtol()及其弟兄们。使用atoi()时,存在一个更简单的函数,但是它不那么健壮和通用。因此,我建议始终养成使用strtol()等的习惯。

旁注,通常将n(无符号)而不是size_t设置为“ int”参数。 (比较strncmp())。然后,您将使用strtoul()

答案 1 :(得分:0)

my_strncmp的最后一个参数定义为int n,但在main中调用时,第三个参数为char * type

答案 2 :(得分:0)

在这里

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类型的

希望这会有所帮助。