본문 바로가기
프로그래밍언어/C 언어

[C언어] 문자열을 대입하는 strcpy 함수

by khsnote22 2022. 12. 10.

char 배열은 문자열을 저장하는 변수의 역할을 하며 쉽게 문자열로 초기화할 수 있습니다. 그러나 다른 문자열로 바꾸는 것은 문자를 하나씩 옮기는 번거로운 일을 수행해야 합니다. 

 

이렇게 하나씩 대입하는 방법 외에 문자열을 한 번에 대입하는 방법도 있습니다. 바로 strcpy 함수를 사용하는 방법입니다. 이런 함수를 문자열 연산 함수라고 하며 사용하려면 string.h 헤더 파일을 인클루드해야 합니다. strcpy 함수는 string copy, 즉 문자열 복사의 약어입니다. 

strcpy(str1, str2)
#include <stdio.h>
#include <string.h> // strcpy 함수를 사용하기 위해 인클루드함

int main(void)
{
	char str1[80] = "strawberry"; // char 배열에 문자열 초기화
	char str2[80] = "apple"; // char 배열에 문자열 초기화
	char *ps1 = "banana"; // 포인터로 문자열 상수 연결
	char* ps2 = str2; // 포인터로 배열 연결
	
	printf("최초 문자열 : %s\n", str1);
	strcpy(str1, str2);
	printf("바뀐 문자열 : %s\n", str1);

	strcpy(str1, ps1); // 문자열 상수를 연결한 포인터 사용
	printf("바뀐 문자열 : %s\n",  str1);

	strcpy(str1, ps2); // 배열을 연견할 포인터 사용
	printf("바뀐 문자열 : %s\n", str1);

	strcpy(str1, "banana"); // 문자열 상수 사용
	printf("바뀐 문자열 : %s\n", str1);

	return 0;
}

strcpy 함수는 복사 받을 곳의 배열명을 첫 번째 인수로 주고 복사할 문자열을 두 번째 인수로 줍니다. 문자열을 복사하는 방식은 문자열의 첫 번째 문자부터 널 문자가 나올 때까지 문자를 하나씩 배열에 옮겨 저장합니다. 따라서 복사할 문자열의 시작 위치를 알 수 있다면 어떤 것이든 두 번째 인수로 사용할 수 있습니다. 

 

첫 번째 인수는 char 배열이나 그 배열명을 저장한 포인터만 가능합니다. 문자열 상수는 값을 바꿀 수 없으므로 첫 번째 인수로 사용하면 프로그램을 실행할 때 에러가 발생합니다. 문자열 상수를 연결하고 있는 포인터를 사용하는 것도 마찬가지입니다. 

 

중요1  첫 번째 인수는 char 배열이나 배열명을 저장한 포인터만 사용할 수  있습니다.
중요2  두 번째 인수는 문자열의 시작 위치를 알 수 있다면 어떤 것이든 사용할 수 있습니다.