본문 바로가기

C 언어 함수

strcpy와 strdup 차이

strcpy와 strdup은 둘 다 C 언어에서 문자열을 다룰 때 사용되는 함수이이다. 하지만 

문자열을 복사할 때와 메모리를 할당할 때 그 기능에서 차이가 있다.

strcpy 함수

strcpy는 C 표준 라이브러리의 일부로, 한 문자열을 다른 문자열로 복사하는 데 사용된다. 이 함수는 목적지 버퍼에 충분한 공간이 확보되어 있어야 하며, 개발자가 메모리 관리를 직접 해야 한다. 

char *strcpy(char *dest, const char *src);
  • dest: 복사할 문자열을 받을 대상 버퍼의 포인터이다. 이 버퍼는 충분한 크기로 미리 할당되어 있어야 한다.
  • src: 복사할 원본 문자열의 포인터이다. 

예제

char source[] = "Hello, world!";
char destination[20];  // 충분한 크기의 버퍼를 미리 할당
strcpy(destination, source);
printf("%s\n", destination);  // 출력: Hello, world!

 

strdup 함수

strdup는 POSIX 표준의 일부로, 문자열을 복사할 때 원본 문자열과 동일한 크기의 새 메모리 영역을 동적으로 할당하고, 그곳에 문자열을 복사한 후, 새로 할당된 메모리 영역의 포인터를 반환한다. 즉, strdup는 내부적으로 malloc을 사용하여 메모리를 할당한다. 그래서 꼭 free 로 동적 메모리를 해제해야한다. 

char *strdup(const char *s);
  • s: 복사하고자 하는 원본 문자열의 포인터 
char *original = "Hello, world!";
char *copy = strdup(original);
if (copy != NULL) {
    printf("%s\n", copy);  // 출력: Hello, world!
    free(copy);  // strdup에 의해 할당된 메모리를 해제
}

 

참고 링크 :

https://www.ibm.com/docs/ko/i/7.3?topic=functions-strdup-duplicate-string

 

strdup() — 스트링 복제

형식 #include char *strdup(const char *string); 참고: strdup 함수는 C++ 프로그램에서 사용 가능합니다. 프로그램이 __cplusplus__strings__ 매크로를 정의할 때만 C에서 사용 가능합니다. 언어 레벨 XPG4, 확장 설명

www.ibm.com

https://www.ibm.com/docs/ko/i/7.3?topic=functions-strcpy-copy-strings

 

strcpy() — 스트링 복사

형식 #include char *strcpy(char *string1, const char *string2); 설명 strcpy() 함수는 끝나는 널 문자를 포함하여 string2를 string1에서 지정한 위치로 복사합니다. strcpy() 함수는 널로 끝나는 스트링에서 작동합니

www.ibm.com

https://www.ibm.com/docs/ko/i/7.3?topic=functions-strncpy-copy-strings