我在“new_str = combine_string(newstr,”test“)”行上收到编译错误;“错误:从不兼容的指针类型
传递`combine_string'的arg 1char * 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;
}
答案 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");