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"이 함수는 작은 조각들로 더 긴 문자열을 만드는 데 필수적입니다. 예를 들어 개별 단어로 완전한 문장을 만들거나 사용자 입력을 미리 정의된 텍스트와 결합할 때 사용됩니다.
챌린지
쉬움strcat() 함수를 사용하여 문자열을 연결하고 개인화된 메시지를 만드는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 처리할 사람 수를 나타내는 정수
n을 읽습니다 - 각 사람에 대해:
- 입력에서 이름을 읽습니다
- 입력에서 성을 읽습니다
- 100개의 요소를 가진
fullName이라는 문자 배열을 생성합니다 strcpy()를 사용하여 이름을fullName으로 복사합니다strcat()을 사용하여 하나의 공백 " "을fullName에 추가합니다strcat()을 사용하여 성을fullName에 추가합니다- 150개의 요소를 가진
greeting이라는 문자 배열을 생성합니다 strcpy()를 사용하여 "Hello, "를greeting으로 복사합니다strcat()을 사용하여fullName을greeting에 추가합니다strcat()을 사용하여 "! Welcome to our program."을greeting에 추가합니다- 최종 인사 메시지를 출력합니다
- 모든 사람을 처리한 후 요약 메시지를 생성합니다:
- 100개의 요소를 가진
summary라는 문자 배열을 생성합니다 strcpy()를 사용하여 "Total people processed: "를summary로 복사합니다- 숫자
n을 string으로 변환하고strcat()을 사용하여 이를summary에 추가합니다 - 요약 메시지를 출력합니다
- 100개의 요소를 가진
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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 C 컴파일러