strcpy 함수란
strcpy
함수는 C 언어에서 문자열을 복사하는 함수입니다. strcpy
는 첫 번째 인자로 전달되는 문자 배열에, 두 번째 인자로 전달되는 문자 배열의 내용을 복사합니다.
#include <string.h>
char* strcpy(char* destination, const char* source);
destination
: 복사된 문자열을 저장할 대상 문자 배열입니다.source
: 복사할 원본 문자열을 나타내는 문자 배열입니다.
strcpy
함수는 대상 문자 배열의 메모리 크기를 확인하지 않고 복사하기 때문에, 원본 문자열의 길이가 대상 문자 배열보다 큰 경우 메모리 오버플로우가 발생할 수 있습니다.
strcpy 함수 예제
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "Hello, World!";
char destination[20];
strcpy(destination, source);
printf("복사된 문자열: %s\n", destination);
return 0;
}
위 예제에서는 strcpy
함수를 사용하여 source
배열의 내용을 destination
배열로 복사합니다. destination
배열은 충분한 크기로 선언되어 있어야 합니다.
strncpy 함수란
strncpy
함수는 strcpy
함수와 비슷하지만, 추가 매개변수인 길이(size
)를 통해 복사할 문자열의 최대 길이를 지정할 수 있습니다.
#include <string.h>
char* strncpy(char* destination, const char* source, size_t size);
destination
: 복사된 문자열을 저장할 대상 문자 배열입니다.source
: 복사할 원본 문자열을 나타내는 문자 배열입니다.size
: 복사할 최대 문자열 길이를 나타내는 값입니다.
strncpy 함수 예제
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "Hello, World!";
char destination[10];
strncpy(destination, source, 5);
destination[5] = '\0';
printf("복사된 문자열: %s\n", destination);
return 0;
}
위 예제에서는 strncpy
함수를 사용하여 source
배열의 내용을 destination
배열로 최대 5글자까지 복사합니다. 그 후에는 명시적으로 문자열의 끝을 나타내는 널 문자를 추가해줘야 함에 주의해야 합니다.
strcpy와 strncpy 함수의 차이점
기능 | strcpy | strncpy |
---|---|---|
복사범위 | 원본 문자열의 길이(널 문자 포함) | 최대 복사 길이(널 문자 포함) |
메모리 보장 | X | 지정한 최대 길이만큼 메모리 보장 |
오버플로우 | 가능 | 지정한 최대 길이 이상은 자름 |
마무리
이번 포스팅에서는 strcpy
와 strncpy
함수의 사용법과 예제에 대해 알아보았습니다. strcpy
함수는 해당 배열의 크기를 확인하지 않기 때문에 주의해야 하며, strncpy
함수는 복사할 문자열의 최대 길이를 지정할 수 있어 유용합니다.
댓글