0

我在“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;
}
4

2 回答 2

2

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

你可能打算通过combine_string(new_str, "test");而不是你如何拥有它。

我可能会建议将来给您的变量和函数提供更具描述性的名称,以避免这些事情发生!

编辑:如果您想使用调用的返回值newstr()as arg 1 ofcombine_string()那么您将必须传递正确的参数以newstr()像这样

new_str = combine_string(newstr(other_str, length_of_other_str), "test");
于 2012-05-05T05:21:20.620 回答
1

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

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

你想要:

new_str = combine_string(new_str, "test");

?

于 2012-05-05T05:18:43.370 回答