SPRING :: NOTE
[C] 문자 배열을 이용하여 문자열을 출력하는 프로그램 작성 본문
반응형
# 문제 설명
- 문자들이 담겨있는 배열 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에 저장된 모든 문자열을 이어붙인 문자열을 반환한다.
반응형
'Development Language > C · C++ · MFC' 카테고리의 다른 글
[C] 숫자 붙이기 연산으로 두 수 비교하는 프로그램 작성 (1) | 2023.04.25 |
---|---|
[C] 문자 또는 문자열을 n번 반복하여 출력하는 프로그램 작성 (0) | 2023.04.25 |
[C] 번갈아가며 문자열을 만드는 프로그램 작성 (0) | 2023.04.25 |
[C] 문자열을 겹쳐 출력하는 프로그램 작성 (0) | 2023.04.25 |
[C] 입력받은 정수 홀/짝 구분하는 프로그램 작성 (0) | 2023.04.25 |
Comments