이 strdup 함수는 strcpy의 문제점을 해결할수 있다.
그럼 strcpy의 문제점은 무엇인지 부터 알아보겠다.
strcpy는 복사할 문자열이 복사될 문자열 공간보다 크면 복사하는도중에 문자열이 짤린다.
하지만 이러한 문제점을 strdup 함수는 해결할수 있다.
strdup 함수는 함수내부적으로 malloc함수를 이용하여 메모리를 할당해주고
리턴값을 char*를 리턴함으로서 동적할당의 첫번째 주소를 넘겨준다.
strdup()의 원형으로는
char *strdup(const char *string)
{
char *Data=0;
그럼 strcpy의 문제점은 무엇인지 부터 알아보겠다.
strcpy는 복사할 문자열이 복사될 문자열 공간보다 크면 복사하는도중에 문자열이 짤린다.
하지만 이러한 문제점을 strdup 함수는 해결할수 있다.
strdup 함수는 함수내부적으로 malloc함수를 이용하여 메모리를 할당해주고
리턴값을 char*를 리턴함으로서 동적할당의 첫번째 주소를 넘겨준다.
strdup()의 원형으로는
char *strdup(const char *string)
{
char *Data=0;
int len = 0;
len = strlen()+1;
Data = malloc(char*len);
return Data;
len = strlen()+1;
Data = malloc(char*len);
return Data;
}
이렇게 정의 되어 있을거 같다는 생각이 든다.
malloc의 리턴형은 void *인데 void*는 자동적으로 좌변에 형에 맞게 변형된다.
그럼으로서 저는 (char *)를 생략하였다.
이렇게 정의 되어 있을거 같다는 생각이 든다.
malloc의 리턴형은 void *인데 void*는 자동적으로 좌변에 형에 맞게 변형된다.
그럼으로서 저는 (char *)를 생략하였다.
'Soft Ware > C 언어!!' 카테고리의 다른 글
ctime 함수 (0) | 2011.11.14 |
---|---|
Time 함수와 time_t라는 변수에 대해서 (0) | 2011.11.14 |
매개변수 값 과 스택에 쌓이는 순서 (0) | 2011.11.07 |
전처리기란? (0) | 2011.10.10 |
#undef 사용 및 정의 (0) | 2011.10.10 |