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 두 번째 인수는 문자열의 시작 위치를 알 수 있다면 어떤 것이든 사용할 수 있습니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C 언어] 문자열을 붙이는 strcat, strncat 함수 (0) | 2022.12.10 |
---|---|
[C 언어] 원하는 개수의 문자만을 복사하는 strncpy 함수 (0) | 2022.12.10 |
[C 언어] 문자열을 출력하는 puts와 fputs 함수 (0) | 2022.12.10 |
[C 언어] 표준 입력 함수의 버퍼 공유 문제 (0) | 2022.12.10 |
[C 언어] fgets 함수를 사용한 문자열 입력 (0) | 2022.12.09 |