2012-05-05 3 views
0

"new_str = combine_string (newstr,"test ");"줄에 컴파일 오류가 나타납니다. 오류 :호환되지 않는 포인터 유형에서 combine_string의 arg 1 전달

new_str = combine_string(new_str, "test"); 

: 호환되지 않는 포인터 타입

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

아. 나는 변수와 함수 이름 모두에 같은 이름을 사용했다. 그리고 그것을 변경할 때 "_"를 하나의 자리에 추가하는 것을 잊었다. – user994165

답변

2

당신이 신고 한대로 newstr은 함수이고 new_str은 char *입니다.

당신은 아마도 당신이 가지고있는 방법 대신 combine_string(new_str, "test");을 전달할 것입니다.

향후 이러한 변수를 피하기 위해 변수 및 함수에 더 많은 설명이 포함 된 이름을 제공 할 것을 제안 할 수 있습니다.

편집 : 당신이 combine_string()의 인수 1로 newstr()에 호출의 반환 값을 사용하고자하는 경우 다음 당신은 너무

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

newstr에서`combine_string '의 1, 인수 전달은 char *

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

당신이 원하는하지, 분명히, 함수인가?

관련 문제