2012-05-05 12 views
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; 
} 
+0

new_strとNewStrによってすでにされているようnewstr()にして、適切なパラメータを渡す必要があります同じものではない –

+0

ああ。私は変数と関数名の両方に同じ名前を使用していましたが、変更したときにその1つの場所に "_"を追加するのを忘れました。 – user994165

答えて

2

newstrはファンクションですが、new_strはchar *です。

おそらくcombine_string(new_str, "test");の代わりに渡すことを意味します。

私はあなたの変数や関数に、今後この種のことを避けるために、よりわかりやすい名前を付けることをお勧めします。

EDIT:あなたがcombine_string()の引数1としてnewstr()に呼び出しの戻り値を使用することを希望しているなら、あなたはそう

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

newstrが関数である、明らかに、ないchar *

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

から `combine_string」の引数1を渡し、あなたがしたいですか:

new_str = combine_string(new_str, "test"); 

関連する問題