Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 strcpy() 함수 완벽 가이드: 문자열 복사의 기본 개념과 예제


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() 함수를 사용하는 것이 좋습니다.