C++ 문자열 연결 strcat, strncat 사용 방법

C++에서 문자열을 연결하는 방법을 알아보겠습니다.

문자열을 연결하는 방법으로 strcat, strncat 함수를 사용합니다.

strcat와 strncat 함수를 간단하게 살펴보겠습니다.

  • strcat() – 대상 문자열 뒤에 문자열을 이어 붙이는 함수.
  • strncat() – 대상 문자열 뒤에 문자열 개수를 지정해 이어 붙이는 함수.

 

strcat()

대상 문자열 뒤에 다른 문자열을 연결하고 싶은 경우에는 strcat() 함수를 사용합니다.

strcat() 작성 방법을 보겠습니다.

strcat(대상 문자열, 연결 문자열)

 

샘플 소스를 보면서 strcat() 사용 방법을 보겠습니다.

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

int main()
{

    char str1[10] = "abc";
    char str2[] = "def";

    // 문자열 연결
    strcat(str1, str2);
    
    printf("strcat : %s\n", str1);
    

    return 0;
}

 

결과

strcat : abcdef

 

변수 str1에 str2 문자열 값이 연결되었습니다.

대상 문자열의 길이가 충분하지 않으면 에러가 발생합니다.

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

int main()
{

    char str1[5] = "abc";
    char str2[] = "def";

    // 문자열 연결
    strcat(str1, str2);
    
    printf("strcat : %s\n", str1);
    

    return 0;
}

 

결과

*** buffer overflow detected ***: ./prog terminated

 

변수 str1의 저장 길이는 5입니다.

str1에는 3자리 문자열이 들어가 있는 상태이며 str2 변수에도 문자열 3자리가 들어가 있습니다.

두 변수의 문자열을 연결하면 6자리가 됩니다.

str1 변수에는 5자리까지 밖에 저장이 안 되기 때문에 에러가 발생합니다.

문자열을 연결할 대상 문자열의 길이를 넉넉하게 확보해놔야 합니다.

 

strncat()

대상 문자열에 원하는 문자열을 연결할 때 원하는 문자열 개수를 지정하고 싶은 경우 strncat() 함수를 사용합니다.

strncat() 함수 작성 방법을 보겠습니다.

strcat(대상 문자열, 연결 문자열, 연결 문자열 개수)

샘플 소스를 보면서 strncat() 사용 방법을 보겠습니다.

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

int main()
{

    char str1[10] = "abc";
    char str2[] = "def";

    // 자리수 지정 문자열 연결
    strncat(str1, str2, 2);
    
    printf("strncat : %s\n", str1);
    

    return 0;
}

 

결과

strncat : abcde

 

변수 str1에 str2 문자열 값이 연결되었습니다.

결과값을 보면 str2 변수의 모든 문자열이 연결된 것이 아니라, str2의 문자열 2개만 연결되었습니다.

strncat() 함수를 사용할 때도 대상 문자열의 길이를 넉넉하게 확보해놔야 에러가 발생하지 않습니다.

댓글