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
https://www.ibm.com/docs/ko/i/7.3?topic=functions-strcpy-copy-strings
https://www.ibm.com/docs/ko/i/7.3?topic=functions-strncpy-copy-strings
'C 언어 함수' 카테고리의 다른 글
isdigit 함수로 정수인지 찾아내기 (1) | 2024.04.28 |
---|---|
strtok를 연속 호출하면 인자에 NULL을 넣는다. (1) | 2024.04.28 |
동적 할당 시 값 초기화 memset 함수 (1) | 2024.04.27 |
sqrt 함수 (1) | 2024.04.22 |
부분 문자열 비교 함수 strstr (0) | 2024.04.22 |