42.3 배열 형태의 문자열을 문자열 포인터에 복사하기

이번에는 배열 형태의 문자열을 문자열 포인터에 복사해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

string_copy_array_to_memory.c

#define _CRT_SECURE_NO_WARNINGS    // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일
#include <stdlib.h>    // malloc, free 함수가 선언된 헤더 파일

int main()
{
    char s1[10] = "Hello";                   // 크기가 10인 char형 배열을 선언하고 문자열 할당
    char *s2 = malloc(sizeof(char) * 10);    // char 10개 크기만큼 동적 메모리 할당

    strcpy(s2, s1);        // s1의 문자열을 s2로 복사

    printf("%s\n", s2);    // Hello

    free(s2);    // 동적 메모리 해제

    return 0;
}

실행 결과

Hello

먼저 malloc 함수로 s2에 메모리를 할당합니다. 당연히 할당할 메모리 공간은 복사될 문자열보다 커야 되겠죠? 여기서는 메모리 공간이 10 바이트이므로 Hello(5글자 + NULL 하나)는 충분히 들어갈 수 있습니다. 그리고 strcpy 함수로 s1의 문자열을 s2에 복사하면 됩니다.

그림 42‑7 배열 형태의 문자열을 문자열 포인터에 복사