strdup()함수는 입력받은 문자열을 복사한 새로운 문자열 포인터를 반환해준다.

 

NAME
       strdup, strndup, strdupa, strndupa - duplicate a string

SYNOPSIS
       #include <string.h>

       char *strdup(const char *s);

       char *strndup(const char *s, size_t n);
       char *strdupa(const char *s);
       char *strndupa(const char *s, size_t n);

 

 

#include 
#include 

int main()
{
    char *me;
    me = strdup("who am I");
    printf("%s\n", me);

    return 0;
}

 

 

[추가 내용]

배열 같은경우

1. char a[] = "test "; 
2. char *a = "test";

1. 문자열 상수의 복사가 이루어져서 스택에 저장. 
2. 문자열 상수의 static 영역의 주소값이 저장이 되기 때문에 리턴값을 사용할수 있다.

 

[함수의 원시 소스코드]

=> strdup.c

출처 : http://opensource.apple.com/source/texinfo/texinfo-4/texinfo/lib/strdup.c?txt

 

 

#if HAVE_CONFIG_H
# include 
#endif

#ifdef STDC_HEADERS
# include 
# include 
#else
char *malloc ();
char *strcpy ();
#endif

/* Return a newly allocated copy of STR,
   or 0 if out of memory. */

char *
strdup (const char *str)
{
  char *newstr;

  newstr = (char *) malloc (strlen (str) + 1);
  if (newstr)
    strcpy (newstr, str);
  return newstr;
}

 

반응형

'Language > C' 카테고리의 다른 글

strcmp 함수 예제  (3161) 2012.08.17
strchr 함수 예제  (442) 2012.08.14
getutxent 함수 예제  (3681) 2012.08.13
strtok 함수 예제  (3377) 2012.08.06
writev 함수 예제  (472) 2012.07.31

+ Recent posts