C Programming

문자열 복사 (strcpy) - 공부하는 도비

DOVISH WISDOM 2022. 11. 22. 19:25  
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;
    
}

반응형