728x90
반응형
C언어에는 문자열을 복사하는 함수 strcpy가 있다.
파이썬을 쓰다가 오랜만에 C를 쓰려고 하니, 파이썬에서 쉽게 되던 문법이 C언어에선 작동 안 되는 경우가 많다.
예를 들어, 아래 코드 처럼 두 문자열 a, b가 있을 때
b = a 또는 a = b 를 해도 문제가 없다.
# 파이썬 문자열 복사
a = 'Dobby'
b = 'Free'
print("a의 문자열 : %s" %a)
print("b의 문자열 : %s\n" %b)
print("!! a를 b에 복사 !!")
b = a
print("복사된 b의 문자열 : %s" %b);
하지만, C에서 저런 문법을 썼다가는
아래와 같은 오류가 발생한다.
(error: assignment to expression with array type)
파이썬처럼 문자열을 복사하기 위해선, strcpy를 쓰면 된다.
strcpy(문자열 1, 문자열 2) 형식으로 적으면,
문자열 1에다가 문자열 2의 값이 저장된다.
#include <stdio.h>
#include <string.h>
int main()
{
//strcpy
char arr_1[20] = "I am Dobby.";
char arr_2[20] = "Dobby is Free.";
printf("arr_1 : %s\n", arr_1);
printf("arr_2 : %s\n\n", arr_2);
printf("!! 문자열 복사 !!\n");
strcpy(arr_2, arr_1);
printf("arr_2 : %s\n", arr_2);
return 0;
}
strcpy(문자열 1, 문자열 2)에서
문자열 1의 크기가 문자열 2의 크기보다 크거나 같지 않다면 에러가 발생하는 것도 볼 수 있습니다.
#include <stdio.h>
#include <string.h>
int main()
{
//strcpy
char arr_1[20] = "I am Dobby.";
char arr_2[5] = "Free"; // 작은 문자열 크기
printf("arr_1 : %s\n", arr_1);
printf("arr_2 : %s\n\n", arr_2);
printf("!! 문자열 복사 !!\n");
strcpy_s(arr_2, arr_1);
printf("arr_2 : %s\n", arr_2);
return 0;
}
반응형
'C Programming' 카테고리의 다른 글
C언어 구조체 연결 리스트 - 공부하는 도비 (0) | 2022.11.23 |
---|---|
C언어 구조체 비교 - 공부하는 도비 (0) | 2022.11.22 |
문자열 비교 (strcmp) - 공부하는 도비 (0) | 2022.11.22 |
C언어 문자열 길이 출력 (strlen) - 공부하는 도비 (0) | 2022.11.22 |
C언어 2차원 배열 동적 메모리 할당 후, 두 행렬의 곱 출력 - 공부하는 도비 (0) | 2022.11.06 |