본문 바로가기
::public/C,C++ 문자열 관련

strcat, strncat(문자열 연결)

by 해맑은욱 2021. 6. 1.

문자열을 이어붙이는, 문자열 연결함수.

 

#include <cstring>        // C++
#include <string.h>        // C
 
char* strcat(char* dest, const char* origin);
char* strncat(char* dest, const char* origin, size_t n);
 
// (char* dest) : 붙임을 당할 문자열. '\0' 위치에 '\0'을 없애고 붙임.
// (const char* origin) : 붙여질 문자열.
// (size_t n) : 붙일 문자열 길이.
// dest 배열의 길이는 dest + origin + 1 보다 커야함.
// 마지막 문자열 끝에만 '\0'이 붙음.
// n 사이즈로 문자를 잘라도 문자열 끝에는 '\0'가 붙음.
 
----------
 
int main(void)
{
    // strcat
    char origin[] = "abcdefg1234";    // "abcdefg1234\0" 이므로 size = 12;
    char dest1[100= "ABCDEFG";
    char dest2[10= "ABCDEFG";       // "ABCDEFG\0" 이므로, size = 8;
 
    //case1 : 넉넉한 dest 배열 뒤에 붙여넣는경우
    strcat(dest1, origin);
 
    //case2 : 넉넉하지 않은 dest 배열 뒤에 넘치게 붙여 넣는 경우.
    //strcat(dest2, origin);    // run time error
            
    printf(" case1 : %s\n", dest1);    // ok
    //printf("case2 : %s\n", dest2);   // error.
 
    // strncat
    char origin[] = "abcdefg1234";    // "abcdefg1234\0" 이므로 size = 12;
    char dest1[100= "ABCDEFG1";
    char dest2[100= "ABCDEFG2";
    char dest3[10= "ABCDEFG3";      // "ABCDEFG3\0" 이므로, size = 9;
 
    //case1 : origin 문자열 모두를 이어 붙이는 경우.
    strncat(dest1, origin, sizeof(origin));
 
    //case2 : origin 문자열 5개만 붙여넣는 경우
    strncat(dest2, origin, 5);
 
    //case3 : 넉넉하지 않은 dest 배열 뒤에 넘치게 붙여 넣는 경우.
    //strncat(dest3, origin, 5);    //run time error
 
    printf("strncat case1 : %s\n", dest1);    // ok
    printf("strncat case2 : %s\n", dest2);    // ok
    //printf("strncat case3 : %s\n", dest3);  // error
 
    return 0;
}
cs

'::public > C,C++ 문자열 관련' 카테고리의 다른 글

TCHAR  (0) 2021.07.01
strtok(문자열 자르기)  (0) 2021.06.02
strcpy, strncpy(문자열 복사)  (0) 2021.06.01
strchr(문자 검색)  (0) 2021.06.01
strcmp, strncmp(문자열 비교)  (0) 2021.06.01