Menu
Coddy logo textTech

strcat() 사용하기

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

strcpy()를 사용하여 문자열을 복사하는 방법을 배웠습니다. 그렇다면 두 문자열을 하나로 합치고 싶을 때는 어떻게 해야 할까요? 이를 연결이라고 하며, 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()를 사용하면 됩니다. 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 now contains "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을 string으로 변환하고 strcat()을 사용하여 이를 summary에 추가합니다
    • 요약 메시지를 출력합니다

string 함수를 사용하려면 <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

이 challenge는 여러 string을 함께 연결하기 위해 strcat()을 사용하고, 초기 string 설정을 위해 strcpy()와 결합하며, 여러 구성 요소로부터 복잡한 string을 단계별로 구성하는 방법에 대한 이해를 평가합니다.

직접 해보기

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

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

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

논리 & 흐름의 모든 레슨

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