从不兼容的指针类型传递`combine_string'的arg 1

时间:2012-05-05 05:15:26

标签: c

我在“new_str = combine_string(newstr,”test“)”行上收到编译错误;“错误:从不兼容的指针类型

传递`combine_string'的arg 1
char * combine_string(char *, char *);

....

char *new_str;
new_str = newstr(item, strlen(item));
new_str = combine_string(newstr, "test");

...

char * combine_string(char *name, char *name2)
{
    char *retval;

    retval = erealloc(retval, (strlen(name) + strlen(name2) + 1));
    if (retval != NULL)
        sprintf(retval, "%s%s", name, name2);
    else
        free(name); //Wouldn't use it any longer
    return retval;
}

...


char *newstr(char *s, int l) {
    char *rv = emalloc(l + 1);

    rv[l] = '\0';
    strncpy(rv, s, l);
    return rv;
}

2 个答案:

答案 0 :(得分:2)

声明它的方式,newstr是一个函数,而new_str是一个char *。

你可能想要传递combine_string(new_str, "test");而不是你的拥有方式。

我可能建议将来为变量和函数提供更具描述性的名称,以避免出现这类事情!

编辑:如果您想要使用newstr()调用的返回值作为combine_string()的arg 1,那么您必须将正确的参数传递给newstr()所以

new_str = combine_string(newstr(other_str, length_of_other_str), "test");

答案 1 :(得分:1)

newstr是一个函数,显然不是char *

new_str = newstr(item, strlen(item));
new_str = combine_string(newstr, "test");
你想要吗?

new_str = combine_string(new_str, "test");