C 표준 라이브러리 함수인 char *strcpy(char *dest, const char *src)는 src(원본)가 가리키는 문자열을 dest(대상)로 복사하는 역할을 합니다.
C 언어에서 문자(character)들이 모여 이루어진 배열을 문자열(string)이라고 부릅니다.
문자열의 선언
문자열 배열은 다음과 같은 형식으로 선언합니다.
char stringname [size];
예를 들어 char string[50];은 최대 50자를 저장할 수 있는 문자열을 의미합니다.
문자열의 초기화
단일 문자 상수를 이용하는 방법 −
char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };
문자열 상수를 이용하는 방법 −
char string[10] = "Hello";
접근(Accessing) − 서식 제어 문자열 "%s"를 사용하면 널 문자('\0')를 만날 때까지 문자열 전체를 입력받거나 출력할 수 있습니다.
strcpy() 함수란?
이 함수는 원본(source) 문자열을 대상(destination) 문자열로 복사할 때 사용됩니다.
대상 문자열의 크기는 반드시 원본 문자열보다 크거나 같아야 합니다. 그렇지 않으면 버퍼 오버플로우가 발생할 수 있습니다.
구문(Syntax)
strcpy() 함수의 기본 구문은 다음과 같습니다.
strcpy(대상 문자열, 원본 문자열);
올바른 사용법과 잘못된 사용법
다음 예제는 strcpy() 함수의 올바른 호출 방식과 잘못된 호출 방식을 비교하여 보여줍니다.
char a[50];
strcpy("Hello", a); // 잘못된 사용: 인수 순서가 바뀜 → 오류 발생
strcpy(a, "hello"); // 올바른 사용: 결과 → a = "Hello"
즉, 첫 번째 인수에는 항상 복사될 대상 변수, 두 번째 인수에는 복사할 원본 문자열이 위치해야 합니다.
예제 프로그램 1
다음 프로그램은 strcpy() 함수의 기본적인 사용 예를 보여줍니다.
#include <string.h>
main() {
char a[50], b[50];
printf("enter a source string");
scanf("%s", a);
strcpy(b, a);
printf("copied string = %s", b);
getch();
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter a source string : Hello Copied string = Hello
이어서 strcpy() 함수의 또 다른 활용 예제를 살펴보겠습니다.
다음은 strcpy 라이브러리 함수의 동작 과정을 보여주는 C 프로그램입니다.
예제 프로그램 2
#include<stdio.h>
#include<string.h>
void main(){
//원본 문자열과 대상 문자열 선언//
char source[25], destination[50];
//사용자로부터 입력 받기//
printf("Enter the string to be copied : ");
gets(source);
printf("Enter the existing destination string : ");
gets(destination);
//strcpy 라이브러리 함수 사용//
strcpy(destination, source);
//대상 문자열 출력//
printf("Destination string is : ");
puts(destination);
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter the string to be copied : C programming Enter the existing destination string : bhanu Destination string is : C programming
기존에 "bhanu"라는 값이 들어 있던 대상 문자열이 strcpy() 함수 호출 후 원본 문자열인 "C programming"으로 완전히 덮어쓰여진 것을 확인할 수 있습니다.
참고 사항
strcpy() 함수를 사용하려면 헤더 파일 <string.h>를 반드시 포함해야 합니다. 또한 strcpy()는 대상 버퍼의 크기를 검사하지 않으므로, 더욱 안전한 코드를 작성하려면 복사할 최대 길이를 지정할 수 있는 strncpy() 함수를 사용하는 것이 좋습니다.