반응형

strncat(3)

#include <string.h>

char *strncat(char *dest, const char *src, size_t n);

dest문자열에 n바이트의 src 문자열을 붙입니다. 만약 src 문자열의 길이가 n보다 작으면 src문자열끝까지만 붙입니다.

strncpy(3)는 항상 null-terminate를 보장하는 함수입니다. dest변수는 문자열을 붙이기에 충분한 buffer를 확보해야 합니다.

 

※ 주의: strncat(3)은 buffer overflow 발생을 유발할 수 있으므로 일반적으로 프로젝트에서는 금지함수로 지정하는 경우가 많습니다.

※ 주의: 일부 UNIX에서는 src가 NULL이면 ""와 같은 효과가 있으나, 최신 LINUX에서는 SEGSEGV오류가 발생하여 비정상 종료됩니다.

이 경우에는 LINUX에서는 strncat(dest, src == NULL ? "" : src, n)로 표현하거나 src가 배열이면 오류가 발생하지 않습니다.

 

 

파라미터

dest
    - dest문자열의 뒤에 src문자열을 붙일 buffer.
src
    -  dest 문자열의 끝에 붙일 문자열
n
    - dest에 추가할 바이트 수. 
    - n 바이트를 붙이기 전에 src문자열이 0x00을 만나 문자열이 끝나면 0x00까지 붙이고 중단합니다.

 

RETURN

dest
    -  dest를 return합니다.

 


활용 예제

 

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

int main(int argc, char **argv)
{
    char dest[1024] = "12345";

    strncat(dest, "abcd", 2);
    printf("dest = %s\n", dest);

    return 0;
}

결과:
dest = 12345ab
반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,