본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter47. 문자열 함수 – strcpy 함수로 문자열 복사하기

by about_IT 2025. 4. 19.

C언어에서 문자열은 배열이기 때문에, = 연산자로 문자열 전체를 한 번에 복사할 수 없습니다.
이럴 때 사용하는 함수가 바로 strcpy입니다.

strcpy 함수는 한 문자열을 다른 배열에 그대로 복사해 줍니다.
문자 하나씩 일일이 복사하지 않아도 되기 때문에 매우 편리합니다.


● strcpy 함수 사용법

#include <string.h>

char str1[20];
strcpy(str1, "Hello");

두 번째 인수의 문자열이 첫 번째 배열에 복사됩니다.


● 문자열 변수 간 복사

char a[20] = "banana";
char b[20];

strcpy(b, a);

문자열 a에 있는 값이 문자열 b로 복사됩니다. 이후 b도 "banana"가 됩니다.


● 주의할 점

  • 복사할 대상(첫 번째 인수)은 충분히 큰 배열이어야 합니다.
  • strcpy는 문자열 끝의 '\0'까지 모두 복사합니다.
  • 문자열 상수에는 복사할 수 없습니다. (예: strcpy("hi", "hello")는 오류)

strcpy 함수는 문자열을 다룰 때 꼭 필요한 도구입니다.
여러 문자열을 복사해서 저장하거나 비교할 때, 가장 기본적인 함수로 자주 사용됩니다.


● 실습 문제

문제 1

"apple"이라는 문자열을 str 배열에 복사하는 코드를 작성하세요.

 

문제 2

두 개의 문자열 a, b가 있을 때 a의 값을 b로 복사하세요.

 

문제 3

strcpy 함수가 복사하는 범위는 어디까지인가요?

 

문제 4

strcpy를 사용할 때 대상 배열의 크기가 작으면 어떤 문제가 생기나요?

 

문제 5

strcpy("hi", "hello");를 실행하면 어떤 문제가 생기나요?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

▶ 정답 확인하기

정답 1

char str[20];
strcpy(str, "apple");

 

정답 2

char a[20] = "banana";
char b[20];
strcpy(b, a);

 

정답 3

strcpy는 문자열의 널 문자('\0')까지 포함하여 모두 복사합니다.

 

정답 4

대상 배열이 너무 작으면 메모리 침범(오버플로우)이 발생할 수 있어 매우 위험합니다.

 

정답 5

문자열 상수는 읽기 전용 메모리에 저장되므로, 복사 대상이 될 수 없습니다. 오류가 발생합니다.