는 C

2009-10-25 3 views
0

나는 C에서 다음 함수를 작성하려고에에서는 StrDup를 만들는 C

char* modelstrdup(char* source);

기능은 표준 C 라이브러리 함수 strdup을 모방해야한다. 매개 변수는 복제하려는 문자열입니다. 반환 된 포인터는 힙을 가리킬 것입니다. 이 함수를 작성할 때 소스 사본을 보유하는 힙에 구조 string을 작성하십시오. 문자열의 길이와 용량을 소스에있는 문자 수와 같게 설정하십시오. 문자열을 구조 문자열의 주소가 아닌 첫 번째 문자로 반환하십시오.

...

//Client Program Format only, will not work! 
char* s; // should be “yo!” when we‟re done 
String* new_string = malloc(sizeof(String) + 10 + 1); 
(*new_string).length = 3; // 3 characters in “yo!” 
(*new_string).capacity = 10; // malloced 10 bytes 
(*new_string).signature = ~0xdeadbeef; 
(*new_string).ptr[0] = „y‟; 
(*new_string).ptr[1] = „o‟; 
(*new_string).ptr[2] = „!‟; 
(*new_string).ptr[3] = 0; 
s = (*new_string).ptr; 
printf(“the string is %s\n”, s); 

어떤 제안이 유일한 힌트는 내 교수는 내게 준,하지만 난 어디서부터 시작 해야할지 모르겠어? 고맙습니다!

+0

이 질문은 매우 명확하지 않다. 문제의 어떤 부분에 문제가 있는지 알려주실 수 있습니까? –

+0

'(* new_string) .ptr [1] = "o";'Yikes! ''''과''''를 어디서 얻었습니까? – pmg

+0

@pmg - OP가 사용하고있는 자르기 및 붙여 넣기 또는 키보드의 기능으로 생각됩니다. – ChrisF

답변

4

을 Heres 힌트

char* strdup(char *str) 
{ 
     char* ret = (char*)malloc(strlen(str)+1); 

     //copy characters here 
     return ret; 
}