C언어/string.h

[C언어] strncat 함수 (문자열 연결)

아무일도없었다 2023. 7. 10. 00:28

사용범위

Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수

기능

C언어 표준 함수로 문자열에 지정한 길이의 문자열을 연결할 때 사용한다.

헤더

#include <string.h>

※ 함수 사용 시 string.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※


함수

char* strncat(char* dest, const char* source, size_t count);

파라미터

  • char* dest
    • 연결(변경)하려는 target string 버퍼를 입력한다.
    • 반드시 NULL 문자로 종료되어야 한다.
    • 최소 dest + count 만큼의 버퍼크기가 확보되어야 한다.

 

  • const char* source
    • dest에 연결할 string을 입력한다.
    • NULL 문자로 종료되는것을 권장한다.

 

  • size_t count
    • dest에 연결하려는 source의 길이를 입력한다.
    • 만약 count가 source의 길이보다 크면 source의 길이만큼 연결된다. 단, 이 경우에는 source가 NULL 문자로 종료되어야 한다.

 

반환값 (return)

dest에 source를 count 만큼 연결한 이후 연결된 string 버퍼인 dest를 반환한다.

 


 

잡학지식

strncat 함수는 count만큼 source의 문자열을 dest에 연결한다.

 

count의 크기가 source의 길이보다 클 경우 source의 길이만큼만 dest에 연결된다.

이 경우 source의 길이의 기준을 종료문자(NULL문자)로 판단하기 때문에 source는 NULL로 끝나는 문자열을 입력하는 것을 권장한다.

 


 

strncat 함수는 dest 버퍼에 source를 count 만큼 붙여서 저장하기 때문에 dest는 최소 dest + count 만큼의 버퍼 크기가 확보되어야 한다.

 


 

<소스 코드>

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

#define MAX_BUF_SIZE 128

int main() {
    char buffer1[MAX_BUF_SIZE] = "strncat";
    char buffer2[] = " Hello World !!";
    char *ret = NULL;

    ret = strncat(buffer1, buffer2, 6);
    
    printf("buffer1[0x%x] ret[0x%x]\n", buffer1, ret);
    printf("buffer1[%s]\n", buffer1);
    
    return 0;
}

 

※ 실행 결과

buffer1[0x61fd50] ret[0x61fd50]
buffer1[strncat Hello]

 

반응형