Menu
Coddy logo textTech

strcat() 사용하기

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

여러분은 strcpy()를 사용하여 문자열을 복사하는 방법을 배웠지만, 두 개의 문자열을 하나로 합치고 싶을 때는 어떻게 해야 할까요? 이것을 결합(concatenation)이라고 하며, C 언어는 이를 위해 <string.h> 라이브러리의 strcat() 함수를 제공합니다.

strcat() 함수는 한 문자열의 내용을 다른 문자열의 끝에 추가합니다. 이 함수는 두 개의 인수를 받습니다: 대상 문자열(수정될 문자열)과 소스 문자열(끝에 추가될 문자열)입니다.

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting은 이제 "Hello World"를 포함합니다

대상 문자열이 원래 내용과 추가되는 새로운 내용을 모두 담을 수 있는 충분한 공간을 확보하는 것이 중요합니다. strcat() 함수는 대상 문자열에서 널 종료 문자를 찾아 제거하고, 해당 위치에 소스 문자열을 복사한 다음, 맨 마지막에 새로운 널 종료 문자를 추가합니다.

때때로 숫자(int와 같은)를 문자열에 연결해야 할 때가 있습니다. strcat()은 문자 배열에서만 작동하므로, 먼저 숫자를 문자열로 변환해야 합니다. sprintf()를 사용하여 이 작업을 수행할 수 있습니다. 이 함수는 printf()와 똑같이 작동하지만, 결과를 화면에 출력하는 대신 서식화된 결과를 문자 배열에 씁니다. sprintf()는 대부분의 C 프로그램에 이미 포함되어 있는 <stdio.h>의 일부입니다.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // 이제 numStr에는 문자열 "42"가 포함됩니다

숫자가 numStr에 문자열로 저장되면, 평소와 같이 strcat()을 사용하여 다른 문자열에 추가할 수 있습니다:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary에는 이제 "Total people processed: 3"이 포함됩니다

이 함수는 개별 단어로 전체 문장을 만들거나 사용자 입력을 미리 정의된 텍스트와 결합하는 것과 같이, 작은 조각들로부터 더 긴 문자열을 구성하는 데 필수적입니다.

challenge icon

챌린지

쉬움

strcat() 함수를 사용하여 개인화된 메시지를 작성함으로써 문자열 연결을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 처리할 사람의 수를 나타내는 정수 n을 읽습니다.
  2. 각 사람에 대하여:
    • 입력에서 이름을 읽습니다.
    • 입력에서 성을 읽습니다.
    • 100개의 요소를 가진 fullName이라는 이름의 문자 배열을 생성합니다.
    • strcpy()를 사용하여 이름을 fullName에 복사합니다.
    • strcat()을 사용하여 fullName에 공백 한 칸 " "을 추가합니다.
    • strcat()을 사용하여 fullName에 성을 추가합니다.
    • 150개의 요소를 가진 greeting이라는 이름의 문자 배열을 생성합니다.
    • strcpy()를 사용하여 "Hello, "를 greeting에 복사합니다.
    • strcat()을 사용하여 fullNamegreeting에 추가합니다.
    • strcat()을 사용하여 "! Welcome to our program."을 greeting에 추가합니다.
    • 최종 인사 메시지를 출력합니다.
  3. 모든 사람을 처리한 후, 요약 메시지를 생성합니다:
    • 100개의 요소를 가진 summary라는 이름의 문자 배열을 생성합니다.
    • strcpy()를 사용하여 "Total people processed: "를 summary에 복사합니다.
    • 숫자 n을 문자열로 변환하고 strcat()을 사용하여 summary에 추가합니다.
    • 요약 메시지를 출력합니다.

문자열 함수를 사용하기 위해 <string.h> 헤더를 포함하는 것을 잊지 마세요.

출력은 다음과 같은 형식으로 결과를 표시해야 합니다:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

예를 들어, 입력이 다음과 같다면:

2
John
Doe
Alice
Smith

출력은 다음과 같아야 합니다:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

이 챌린지는 strcat()을 사용하여 여러 문자열을 함께 연결하고, 이를 초기 문자열 설정을 위한 strcpy()와 결합하며, 여러 구성 요소로부터 복잡한 문자열을 단계별로 구축하는 능력을 테스트합니다.

직접 해보기

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

int main() {
    // 인원수를 입력받습니다
    int n;
    scanf("%d", &n);
    
    // TODO: 아래에 코드를 작성하세요
    // 각 사람을 처리하고 인사 메시지를 생성합니다
    // 그런 다음 요약 메시지를 생성하고 표시합니다
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨