0

「new_str=Combine_string(newstr、 "test");」の行でコンパイルエラーが発生します。エラー:互換性のないポインタ型から`combine_string'の引数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()引数1として使用するcombine_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 に答える