SPRING :: NOTE

[C] 문자 또는 문자열을 n번 반복하여 출력하는 프로그램 작성 본문

Development Language/C · C++ · MFC

[C] 문자 또는 문자열을 n번 반복하여 출력하는 프로그램 작성

RAYZIE 2023. 4. 25. 16:19
반응형
# 문제 설명
 - 문자열 my_string과 정수 k가 주어질 때, 
   my_string을 k번 반복한 문자열을 return 하는 함수를 작성

# 제한사항
 - 1 ≤ my_string의 길이 ≤ 100
 - my_string은 영소문자로만 이루어져 있음
 - 1 ≤ k ≤ 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* repeatString(char* my_string, int k) {
    int len = strlen(my_string); // 문자열의 길이
    char* result = (char*)malloc(len * k + 1); // 결과 문자열 저장할 동적할당

    // k번 만큼 문자열을 이어붙임
    for (int i = 0; i < k; i++) {
        strcat(result, my_string);
    }
    return result;
}

int main() {
    char my_string[101]; // 입력 문자열
    int k; // 반복 횟수

    printf("문자열을 입력하세요: ");
    scanf("%s", my_string);
    printf("반복 횟수를 입력하세요: ");
    scanf("%d", &k);

    char* result = repeatString(my_string, k);
    printf("%s\n", result);

    free(result); // 동적할당 해제
    return 0;
}

위 코드는 입력 문자열 my_string과 반복 횟수 k를 받아서, 입력 문자열을 k번 반복한 결과 문자열을 반환하는 함수 repeatString을 구현.

입력 문자열의 길이를 저장하기 위해 len 변수를 선언하고, 입력 문자열을 k번 반복해서 결과 문자열에 복사한다.

strncpy 함수를 이용해서 문자열을 복사하는데, 이 때 result 배열에 i * len 만큼 오프셋을 주어서 입력 문자열이 이어붙이도록 한다.

이때 결과 문자열을 저장할 동적할당을 해주었으며, 반복문을 이용하여 문자열을 k번만큼 이어붙였다. 

마지막으로 결과 문자열의 끝을 표시하는 NULL 문자를 추가하고, 결과 문자열 포인터를 반환한다.

반응형
Comments