2013-10-17 8 views
0

내가 기능에 str_cpystrcat와 함수에 인수 문자 (텍스트)를 전송 -

void str_cpy(char *str_in, char *str_out); 

Examle (일) &schar array(text)를 보내 C :

void str_cpy(char *str_in, char *str_out); 
int main(int argc, char *argv[]) 
{ 
    char *s = NULL; 
    str_cpy(&s, "Hola Hola"); 
    puts(&s); 
    system("PAUSE"); 
    return 0; 
} 

void str_cpy(char *str_in, char *str_out) { 
    strcat(str_in, "Hello"); 
} 

하지 작업을 수행 (방법을 작동해야 함)

void str_cpy(char *str_in, char *str_out); 
int main(int argc, char *argv[]) 
{ 
    char *s = NULL; 
    str_cpy(&s, "Hola Hola"); 
    puts(&s); 
    system("PAUSE"); 
    return 0; 
} 

void str_cpy(char *str_in, char *str_out) { 
    strcat(str_in, str_out); 
} 

어떻게 마지막 기능을 쓸 수 있습니까? 어떻게 제대로 str_cpy 함수를 쓰거나 함수에서 char 배열을 보내는가?

+1

'str'으로 시작하는 이름을 사용하여 자신의 함수를 정의하는 것은 실제로 합법적이지 않습니다. 그러한 모든 이름은 유보됩니다. 대부분의 컴파일러는 신경 쓰지 않지만 필자는이를 지적했다. – unwind

+0

제발 도와주세요! 이것에 대한 정보를 찾을 수 없습니다! – Zai4ik

+0

@unwind 어떻게 올바르게 쓸 수 있습니까? – Zai4ik

답변

1

아무도 작동하지 않습니다. s에 대한 메모리를 할당해야합니다. 예 :

void str_cpy(char *str_in, char *str_out); 
int main(int argc, char *argv[]) 
{ 
    char *s = calloc(sizeof(char), 100); //for 100 chars string 
    //OR char s[100] = { 0 }; 

    //------v pass s not &s 
    str_cpy(s, "Hola Hola"); 
    puts(s); //similary use s not &s 
    system("PAUSE"); 
    return 0; 
} 

void str_cpy(char *str_in, char *str_out) { 
    strcat(str_in, str_out); 
} 
+0

void str_cpy (char * str_in, char * str_out) { strcat (str_in, str_out); } - 올바르게 작동합니까? – Zai4ik

+0

s에 1 개의 메모리를 할당 할 수없는 이유는 무엇입니까? char s [1] = {0}; – Zai4ik

+1

@ Zai4ik, 네, 괜찮습니다, 만약 당신의'str_in'이 제 코드에있는 빈 문자열로 초기화된다면. 'chars [1]'는 크기가 1 인 배열을 만듭니다. 나는 그걸 원하지 않는다고 생각합니다. – Rohan

1

이미 할당 된 변수를 사용해야합니다. 당신은 어떤 물리적 메모리 주소가 제대로 지적 필요하지 않을

char *pointer = NULL; 

: 같은 포인터를 사용하는 경우 문제는 여기에있다. 당신이 할 수있는 일 : 당신이이 개 변수를 사용하려는 해달라고하면

char string[32]; 
char *pointer; 

pointer = string; // or pointer = &string[0], which is the same 
str_cpy(pointer, "Something"); 
// Here, pointer holds a real address, so you can work with it. 

, 당신은 그것을 위해 메모리를 alocate 수 있습니다.

char *pointer; 
pointer = (char *) malloc(strlen("Something")+1); 
// Dont forget an extra byte for binary zero who will termine the string 
// from now, pointer holds the address of a memory block. It means you can: 
strcpy(pointer, "Something");