SPRING :: NOTE

[C] 문자 배열을 이용하여 문자열을 출력하는 프로그램 작성 본문

Development Language/C · C++ · MFC

[C] 문자 배열을 이용하여 문자열을 출력하는 프로그램 작성

RAYZIE 2023. 4. 25. 16:14
반응형
# 문제 설명
 - 문자들이 담겨있는 배열 arr가 주어진다.
 - arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성

# 제한사항
 - 1 ≤ arr의 길이 ≤ 200
 - arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* solution(char* arr[], int arr_len) {
    // 문자열을 저장할 메모리 동적 할당
    char* result = (char*)malloc(sizeof(char) * (arr_len + 1));
    // 동적 할당된 메모리가 있는지 확인
    if (result == NULL) {
        return NULL;
    }
    // 문자열 초기화
    memset(result, 0, sizeof(char) * (arr_len + 1));
    // arr에 저장된 모든 문자열을 이어붙이기
    for (int i = 0; i < arr_len; i++) {
        strcat(result, arr[i]);
    }
    return result;
}

int main(void) {
    char* arr[] = {"a", "b", "c", "d", "e"};
    int arr_len = 5;
    
    char* result = solution(arr, arr_len);
    printf("%s", result);
    
    return 0;
}

이 함수는 문자열들을 저장하는 char 포인터 배열 arr와 배열의 길이 arr_len을 인자로 받는다.

함수는 arr에 저장된 문자열을 이어붙인 문자열을 동적으로 할당한 메모리에 저장하고, 이를 반환한다.

먼저, result라는 char 포인터 변수를 선언하고, arr_len + 1 크기만큼 메모리를 동적으로 할당한다.

그리고 동적으로 할당한 메모리가 있는지 확인하기 위해, result가 NULL을 가리키는지 확인하며, 만약 메모리를 할당하지 못했다면 NULL을 반환한다.

이후, 메모리에 저장된 문자열을 초기화하기 위해 memset 함수를 사용한다.

이 함수는 메모리 블록을 특정 값으로 초기화하는 역할을 하며, sizeof(char) * (arr_len + 1) 크기만큼의 메모리를 0으로 초기화한다.

마지막으로, for 루프를 사용하여 arr에 저장된 모든 문자열을 이어붙이기 위해 strcat 함수를 호출한다.

이 함수는 문자열을 이어붙이는 함수로, 첫 번째 인자로 받은 문자열 뒤에 두 번째 인자로 받은 문자열을 이어붙인 후, 결과 문자열을 반환한다.

결과적으로, 함수는 arr에 저장된 모든 문자열을 이어붙인 문자열을 반환한다.

반응형
Comments