C++의 strncat() 함수는 문자열 연결(Concatenation)에 사용됩니다. 이 함수는 원본 문자열(src)에서 지정한 개수만큼의 문자를 대상 문자열(dest)의 끝에 덧붙인 뒤, 대상 문자열을 가리키는 포인터를 반환합니다. strncat()의 기본 문법은 다음과 같습니다.
char * strncat ( char * dest, const char * src, size_t num );
위 문법에서 원본 문자열 src는 최대 num개의 문자까지만 대상 문자열 dest의 끝에 추가됩니다. 만약 num이 원본 문자열의 실제 길이보다 크다면, 널 종료 문자('\0')를 포함하여 원본 문자열 전체가 복사됩니다.
strncat() 함수의 동작을 확인할 수 있는 예제 프로그램은 다음과 같습니다.
예제
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[20] = "Programming is ";
char str2[20] = "fun";
strncat(str1, str2, 3);
cout << "The concatenated string is "<<str1;
return 0;
}
실행 결과
The concatenated string is Programming is fun
위 프로그램에서는 두 개의 문자열 str1과 str2가 각각 선언 및 초기화되었습니다. 그런 다음 strncat() 함수가 호출되어 str2의 내용 중 세 글자("fun")를 str1의 끝에 덧붙입니다. 마지막으로 연결된 문자열은 cout을 통해 화면에 출력됩니다. 해당 과정은 아래 코드와 같습니다.
char str1[20] = "Programming is "; char str2[20] = "fun"; strncat(str1, str2, 3); cout << "The concatenated string is "<<str1;
참고 사항
strncat()은 복사할 문자 수를 직접 제한할 수 있다는 점에서 strcat()보다 버퍼 오버플로우(buffer overflow) 위험을 줄이는 데 유리합니다. 다만, 대상 배열 dest는 연결된 결과 문자열과 자동으로 추가되는 널 종료 문자까지 모두 담을 수 있을 만큼 충분히 커야 한다는 점에 주의해야 합니다.