38.4 배열 형태의 문자열을 문자열 포인터에 붙이기

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

string_concatenate_array_to_memory.c

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

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

    strcpy(s2, "Hello");   // s2에 Hello 문자열 복사

    strcat(s2, s1);        // s2 뒤에 s1을 붙임

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

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

    return 0;
}

실행 결과

Helloworld

문자열 포인터 s2 뒤에 문자열을 붙일 것이므로 먼저 malloc 함수로 메모리를 할당합니다. 문자열이 더 붙더라도 메모리가 모자라지 않도록 넉넉하게 할당합니다. 그리고 strcpy 함수로 s2"Hello" 문자열을 복사해줍니다.

s2가 준비되었으면 strcat 함수로 문자열 포인터 s2 뒤에 문자열 포인터 s1을 붙이면 됩니다. 그리고 문자열 사용이 끝났다면 반드시 free 함수로 동적 할당한 메모리를 해제합니다.

그림 38‑8 배열 형태의 문자열을 문자열 포인터에 붙이기