C언어 header/string.h
strncat(3) - 문자열의 뒤에 문자열을 붙이기(n바이트 이내)
자연&사람
2019. 9. 25. 22:57
반응형
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
반응형