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() 함수는 대상 문자열에서 널 종료 문자를 찾아 제거하고, 소스 문자열을 해당 위치에 복사한 다음, 맨 마지막에 새로운 널 종료 문자를 추가합니다.

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

때때로 숫자를 연결하기 전에 문자열로 변환해야 할 때가 있습니다. 이를 위해 <stdio.h>(대부분의 C 프로그램에 이미 포함되어 있음)의 sprintf()를 사용할 수 있습니다. sprintf()printf()와 똑같이 작동하지만, 화면에 출력하는 대신 형식이 지정된 결과를 char 배열에 씁니다.


예를 들어, 정수를 문자열로 변환하려면 다음과 같이 합니다:

int age = 25;
char ageStr[10];
sprintf(ageStr, "%d", age);  // ageStr에는 이제 "25"가 포함됩니다

char result[30] = "Age: ";
strcat(result, ageStr);       // result에는 이제 "Age: 25"가 포함됩니다

sprintf()의 첫 번째 인수는 대상 char 배열이고, 두 번째는 형식 문자열(printf()와 동일한 형식 지정자 사용)이며, 나머지 인수는 삽입할 값입니다.
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()와 결합하는 방법, 그리고 여러 구성 요소로부터 복잡한 문자열을 단계별로 구축하는 방법에 대한 이해도를 테스트합니다.

치트 시트

<string.h>strcat() 함수는 소스 문자열을 대상 문자열의 끝에 추가하여 두 문자열을 연결(결합)합니다.

구문: strcat(destination, source)

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

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

중요: 대상 문자열은 원래 내용과 추가된 내용을 모두 담을 수 있는 충분한 공간이 있어야 합니다. 이 함수는 대상 문자열에서 널 종료 문자를 찾아 제거하고, 그 위치에 소스 문자열을 복사한 다음, 마지막에 새로운 널 종료 문자를 추가합니다.

<stdio.h>sprintf() 함수는 printf()와 비슷하게 작동하지만, 형식이 지정된 결과를 출력하는 대신 문자 배열(문자열)에 씁니다. 이는 정수(또는 다른 값)를 문자열로 변환하는 데 유용합니다.

구문: sprintf(destination, format, value)

#include <stdio.h>

int num = 42;
char numStr[10];
sprintf(numStr, "%d", num);  // numStr은 이제 "42"를 포함합니다.

중요: 대상 배열은 널 종료 문자를 포함하여 결과 문자열을 담을 수 있을 만큼 충분히 커야 합니다.

직접 해보기

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

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

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

Logic & Flow의 모든 레슨