Menu
CoddyTech

복습: 동적 문자열 연결

Coddy C 여정의 논리 & 흐름 섹션에 포함된 레슨. 63개 중 61번째.

challenge icon

챌린지

쉬움

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

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

이 과제에서는 동적 메모리 할당, 문자열 조작 함수, 포인터 반환값, 적절한 메모리 관리에 대한 숙련도를 확인합니다. 메모리 요구량을 계산하고, 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;
}

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러