strcpy
프로그램을 개발하다 보면 배열의 문자열들을 다른 배열에 복사해야 할 때가 있습니다.
이럴 때 우리는 string.h 에 있는 유틸리티 함수들을 많이 사용하게 됩니다.
C 언어에서는 strcpy 라는 함수를 통해 문자열 복사를 지원합니다.
이 함수는 소스 문자열을 대상 문자열에 복사하여 문자열을 복제합니다.
strcpy 함수를 사용하면 문자열을 효율적으로 복사하고 조작할 수 있습니다.
strcpy 함수 원형은?
strcpy 함수는 <string.h> 헤더 파일에 선언되어 있으며, 다음과 같은 원형을 갖습니다.
char *strcpy(char *dest, const char *src);
strcpy 인자는?
strcpy 함수는 아래와 같은 총두 개의 인자를 받습니다.
각 인자에 대해 알아보도록 하겠습니다.
dest: 복사할 대상 문자열의 시작 주소를 가리키는 포인터
src: 복사할 소스 문자열의 시작 주소를 가리키는 포인터
자~ memcpy, memmove와 다르게 복사해야 할 대상의 크기인 'n'이 없습니다.
이게 바로 큰 차이점입니다.
C언어에서는 배열에 저장되어있는 문자열들의 끝을 판단하는 것은 배열에 저장된 문자열 마지막 값이 0 이냐?입니다.
0이면 이제 여기서 문자열이 끝났다는 것이죠...
굳이 표현을 하자면 hello world0입니다.
여기서 0은 진짜 숫자 0입니다. 문자열 '0'이 아니라!
strpy 함수는 바로 이 0을 찾아내어 두 개의 문자열을 붙여주는 함수입니다.
strcpy 언제 사용하나?
strcpy 함수는 한 문자열을 다른 문자열로 복사해야 할 때 사용됩니다.
소스 문자열을 대상 문자열로 복사하여 문자열을 복제하거나, 기존 문자열에 새로운 값을 할당하고자 할 때 strcpy 함수를 사용할 수 있습니다.
strcpy 다른 문자열을 기존 문자열 뒤에 복사하기 예제
다음은 strcpy 함수를 사용하여 다른 문자열을 기존 문자열 뒤에 복사하는 예제입니다.
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello ";
char s[] = "World!";
strcpy(d + strlen(d), s);
printf("%s\n", d);
return 0;
}
위의 예제에서는 s 문자열을 strcpy 함수를 사용하여 d 문자열의 끝에 복사합니다.
strlen 함수를 통해 d 문자열의 끝 위치를 찾고, d + strlen(d)로 이동하여 s 문자열을 복사합니다.
결과적으로 d 문자열에는 "Hello World!"가 출력됩니다.
strcpy 두 문자열을 기존 문자열 뒤에 이어 붙이기 예제
다음은 strcpy 함수를 사용하여 두 문자열을 기존 문자열 뒤에 이어 붙이는 예제입니다
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello";
char s[] = "World!";
strcpy(d + strlen(d), "-");
strcpy(d + strlen(d), s);
printf("%s\n", d);
return 0;
}
위의 예제에서는 s 문자열을 strcpy 함수를 사용하여 d 문자열의 끝에 복사하기 전에 먼저 '-' 문자를 복사합니다.
strlen 함수를 통해 d 문자열의 끝 위치를 찾고, d + strlen(d)로 이동하여 공백 문자를 복사한 뒤, 다시 s 문자열을 복사합니다.
결과적으로 d 문자열에는 "Hello-World!"가 출력됩니다.
오늘은 위와 같이 두 문자열을 붙여주는 string.h의 유틸리티 함수 strcpy에 대해 알아보았습니다.
strcpy는 memcpy, memmove처럼 n이라는 크기 지정 인자가 없이 문자열의 끝일 기준으로 판단한다는 것을 확인하였습니다.
따라서 더욱이 조심해서 써야 할 함수입니다.!