을 구현하는 가장 좋은 방법 : 주요 기능에나는이 같은 strcpy를 함수를 호출 할 경우 strcpy를 기능
char *s = NULL;
strcpy(&s, "Test");
을이 그것의 최선의 구현이 될 것이다 : 또는 더 나은 방법을이 함수를 구현합니까? 감사합니다.
을 구현하는 가장 좋은 방법 : 주요 기능에나는이 같은 strcpy를 함수를 호출 할 경우 strcpy를 기능
char *s = NULL;
strcpy(&s, "Test");
을이 그것의 최선의 구현이 될 것이다 : 또는 더 나은 방법을이 함수를 구현합니까? 감사합니다.
우선 : sizeof(src)
을 가져 가면 문자열이 아닌 포인터 용 메모리가 할당됩니다. 32 비트 환경에서는 필요에 따라 10 바이트가 아닌 4 바이트의 메모리가 남게됩니다.
따라서, 당신은 당신의 두 번째 인수에서 당신이 필요합니까 얼마나 많은 메모리를 공급하거나 infere해야합니다 이런 식으로 뭔가 :
void str_cpy(char** dest, const char* src){
if (*dest == NULL) *dest = malloc(strlen(src)+1);
else *dest = realloc(*dest, strlen(src)+1);
memcpy(*dest, src, strlen(src) + 1);
}
맞습니다 :'realloc()'을 호출하는 것으로 충분합니다. 에러 처리에 대해서, 원래의'strcpy()'함수는 목적지 문자열에 대한 포인터를 반환합니다. 너도 똑같을거야. –
더 나은 호출하는'strdup'을, 기능은'매우 다르기 때문에 strcpy'. –