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
문자열 상수는 읽기 전용 메모리에 저장되므로, 복사 대상이 될 수 없습니다. 오류가 발생합니다.
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter49. 문자열 함수 – strcmp 함수로 문자열 비교하기 (0) | 2025.04.19 |
---|---|
[C언어][초급] Chapter48. 문자열 함수 – strcat 함수로 문자열 이어 붙이기 (0) | 2025.04.19 |
[C언어][초급] Chapter46. 문자열 함수 – strlen 함수로 문자열 길이 재기 (1) | 2025.04.18 |
[C언어][초급] Chapter45. 문자열 입력과 출력 – 사용자와 소통하는 가장 기본적인 방법 (1) | 2025.04.18 |
[C언어][초급] Chapter44. 문자열 배열 – 여러 개의 문자열을 한 번에 저장하는 방법 (0) | 2025.04.18 |