strcat
오늘은 C언어의 strcat 함수에 대해 알아보도록 하겠습니다.
strcat함수는 하나의 문자열 뒤에 새로운 문자열을 이어 붙이는 함수입니다.
이 함수는 붙이고싶은 문자열을 붙이고 싶은 대상에 합칩니다.
결국 memcpy, strncpy와 비슷한 기능을 하게 됩니다.
하지만 모든게 동일하다면 함수가 괜히 나눠져 있을 필요는 없겠죠?
차이점도 천천히 알아보도록 하겠습니다.

strcat 함수 원형은?
strcat 함수는 <string.h> 헤더 파일에 선언되어 있으며, 다음과 같은 원형을 갖습니다
char *strcat(char *dest, const char *src);
strcat 인자는?
strcat 함수는 두 개의 인자를 가집니다.
dest: 문자열이 추가될 대상 문자열의 시작 주소를 가리키는 포인터
src: 추가할 소스 문자열의 시작 주소를 가리키는 포인터
이 인자들을 전달하여 문자열을 합치게 됩니다.
자 그러면 strcpy, strncpy와 차이점은 무엇일까요?
바로, 이어 붙일 결과 포인터 주소를 계산하지 않아도 된다는 것입니다.
예를 들어 strcpy로 "hello", "world"를 붙인다면, 아래와 같이 결과 문자열의 길이를 다시 계산하여 그 뒤에 붙여야 합니다.
...
strcpy(dest, "hello");
strcpy(dest + strlen(dest), "world");
...
하지만, strcat은 이어 붙여야 할 위치도 알아서 파악해서 뒤에 붙여줍니다.
그 원리는 문자열의 끝은 반드시 0으로 끝난다는 것에 기반합니다.
즉 결과물의 마지막 0 위치에 새로운 문자열을 이으고 다시 마지막에 0을 추가한다는 것이죠.
이게 바로 차이점입니다.

strcat 언제 사용하나?
strcat 함수는 문자열을 기존 문자열에 추가해야 할 때 사용됩니다.
내가 어떠한 문자열을 처리하고 있었는데, 이 문자열 뒤에 새로운 문자열을 이어 붙이기 위해서 strcat을 사용합니다.
다만, 주의점은 반드시 0으로 끝나는 문자열들을 붙여야 한다는 것입니다.
만약 0으로 끝나지 않는 배열을 붙이는 경우 예기치 못한 상황이 발생할 수 있습니다.
strcat 다른 문자열을 기존 문자열 뒤에 합치는 예제
다음은 strcat 함수를 사용하여 다른 문자열을 기존 문자열 뒤에 합치는 예제입니다
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello";
char s[] = ", World!";
strcat(d, s);
printf("%s\n", d);
return 0;
}
위의 예제에서는 src 문자열을 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
결과적으로 dest 문자열에는 "Hello, World!"가 출력됩니다.
strcat 다른 2개의 문자열을 기존 문자열 뒤에 합치는 예제
다음은 strcat 함수를 사용하여 다른 두 개의 문자열을 기존 문자열 뒤에 합치는 예제입니다.
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello";
char s1[] = ", ";
char s2[] = "World!";
strcat(d, s1);
strcat(d, s2);
printf("%s\n", d);
return 0;
}
위의 예제에서는 먼저 src1 문자열을 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
그리고 src2 문자열을 다시 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
결과적으로 dest 문자열에는 "Hello, World!"가 출력됩니다.
자 오늘은 문자열을 이어 붙일 때 새롭게 위치를 계산하지 않아도 되는 strcat에 대해 알아보았습니다.
strcat
오늘은 C언어의 strcat 함수에 대해 알아보도록 하겠습니다.
strcat함수는 하나의 문자열 뒤에 새로운 문자열을 이어 붙이는 함수입니다.
이 함수는 붙이고싶은 문자열을 붙이고 싶은 대상에 합칩니다.
결국 memcpy, strncpy와 비슷한 기능을 하게 됩니다.
하지만 모든게 동일하다면 함수가 괜히 나눠져 있을 필요는 없겠죠?
차이점도 천천히 알아보도록 하겠습니다.

strcat 함수 원형은?
strcat 함수는 <string.h> 헤더 파일에 선언되어 있으며, 다음과 같은 원형을 갖습니다
char *strcat(char *dest, const char *src);
strcat 인자는?
strcat 함수는 두 개의 인자를 가집니다.
dest: 문자열이 추가될 대상 문자열의 시작 주소를 가리키는 포인터
src: 추가할 소스 문자열의 시작 주소를 가리키는 포인터
이 인자들을 전달하여 문자열을 합치게 됩니다.
자 그러면 strcpy, strncpy와 차이점은 무엇일까요?
바로, 이어 붙일 결과 포인터 주소를 계산하지 않아도 된다는 것입니다.
예를 들어 strcpy로 "hello", "world"를 붙인다면, 아래와 같이 결과 문자열의 길이를 다시 계산하여 그 뒤에 붙여야 합니다.
...
strcpy(dest, "hello");
strcpy(dest + strlen(dest), "world");
...
하지만, strcat은 이어 붙여야 할 위치도 알아서 파악해서 뒤에 붙여줍니다.
그 원리는 문자열의 끝은 반드시 0으로 끝난다는 것에 기반합니다.
즉 결과물의 마지막 0 위치에 새로운 문자열을 이으고 다시 마지막에 0을 추가한다는 것이죠.
이게 바로 차이점입니다.

strcat 언제 사용하나?
strcat 함수는 문자열을 기존 문자열에 추가해야 할 때 사용됩니다.
내가 어떠한 문자열을 처리하고 있었는데, 이 문자열 뒤에 새로운 문자열을 이어 붙이기 위해서 strcat을 사용합니다.
다만, 주의점은 반드시 0으로 끝나는 문자열들을 붙여야 한다는 것입니다.
만약 0으로 끝나지 않는 배열을 붙이는 경우 예기치 못한 상황이 발생할 수 있습니다.
strcat 다른 문자열을 기존 문자열 뒤에 합치는 예제
다음은 strcat 함수를 사용하여 다른 문자열을 기존 문자열 뒤에 합치는 예제입니다
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello";
char s[] = ", World!";
strcat(d, s);
printf("%s\n", d);
return 0;
}
위의 예제에서는 src 문자열을 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
결과적으로 dest 문자열에는 "Hello, World!"가 출력됩니다.
strcat 다른 2개의 문자열을 기존 문자열 뒤에 합치는 예제
다음은 strcat 함수를 사용하여 다른 두 개의 문자열을 기존 문자열 뒤에 합치는 예제입니다.
#include <stdio.h>
#include <string.h>
int main() {
char d[20] = "Hello";
char s1[] = ", ";
char s2[] = "World!";
strcat(d, s1);
strcat(d, s2);
printf("%s\n", d);
return 0;
}
위의 예제에서는 먼저 src1 문자열을 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
그리고 src2 문자열을 다시 strcat 함수를 사용하여 dest 문자열의 뒤에 합칩니다.
결과적으로 dest 문자열에는 "Hello, World!"가 출력됩니다.
자 오늘은 문자열을 이어 붙일 때 새롭게 위치를 계산하지 않아도 되는 strcat에 대해 알아보았습니다.