Menu
Coddy logo textTech

복습: 동적 문자열 연결

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 61번째.

challenge icon

챌린지

쉬움

텍스트 처리 유틸리티를 구축하기 위해 동적 문자열 연결 함수를 구현하는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음과 같은 concatenateStrings 함수를 작성합니다:
    • str1str2라는 이름의 두 개의 char* 매개변수를 받습니다.
    • 동적으로 할당된 문자열을 가리키는 char*를 반환합니다.
    • 두 문자열과 널 종료 문자(null terminator)를 포함하여 필요한 총 메모리를 계산합니다.
    • malloc()을 사용하여 필요한 정확한 양의 메모리를 할당합니다.
    • 메모리 할당이 성공했는지 확인합니다 (할당 실패 시 NULL 반환).
    • strcpy()를 사용하여 첫 번째 문자열을 할당된 메모리에 복사합니다.
    • strcat()을 사용하여 두 번째 문자열을 결과에 추가합니다.
    • 새로 생성된 연결된 문자열에 대한 포인터를 반환합니다.
  2. 다음과 같은 processText 함수를 작성합니다:
    • 세 개의 char* 매개변수 word1, word2, separator를 받습니다.
    • 동적으로 할당된 문자열을 가리키는 char*를 반환합니다.
    • word1 + separator + word2 형식의 결합된 문자열을 생성합니다.
    • 먼저 concatenateStrings를 호출하여 word1separator를 결합합니다.
    • 그런 다음 concatenateStrings를 다시 호출하여 결과에 word2를 추가합니다.
    • 중간 메모리 할당을 적절하게 해제(free)합니다.
    • 최종 연결된 결과를 반환합니다.
  3. main 함수에서:
    • 각각 크기가 50인 세 개의 문자 배열 firstWord, secondWord, connector를 선언합니다.
    • 입력으로부터 첫 번째 단어, 두 번째 단어, 연결자를 나타내는 세 개의 문자열을 읽습니다.
    • 이 세 문자열을 사용하여 processText 함수를 호출합니다.
    • 반환된 포인터가 NULL이 아닌지 확인합니다.
    • 성공하면 Result: [concatenated_string]와 같은 정확한 형식으로 결과를 출력합니다.
    • 메모리 할당이 실패하면 Memory allocation failed를 출력합니다.
    • 결과 문자열의 길이를 Length: [length]와 같은 정확한 형식으로 계산하여 출력합니다.
    • 동적으로 할당된 메모리를 해제(free)합니다.

이 챌린지는 동적 메모리 할당, 문자열 조작 함수, 포인터 반환 값 및 적절한 메모리 관리에 대한 숙련도를 테스트합니다. 메모리 요구 사항 계산, malloc()free() 사용, 여러 문자열 함수 작업, 메모리 할당 실패 처리를 연습하게 됩니다. 이 챌린지는 동적 할당을 통해 함수가 자신의 범위를 벗어나서도 유지되는 데이터를 생성하고 반환하는 방법을 보여줍니다.

직접 해보기

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// TODO: 여기에 concatenateStrings 함수를 작성하세요

// TODO: 여기에 processText 함수를 작성하세요

int main() {
    // 입력 읽기
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: 아래에 코드를 작성하세요
    // processText 함수를 호출하고 결과를 처리하세요
    
    return 0;
}

Logic & Flow의 모든 레슨