dse src 문자열을 복사할 위치 문장열의 위치이며 des 문자열 뒤에 src 문자열이 복사된다.
src des 뒤에 복사할 문자열의 주소이며 char * 형의로 되어 있다.
num 복사할 데이터의 byte 수이며 size_t 형으로 전달해주면 된다.
strncat 함수는 strcat 한수와 더불어 문자열을 병합해주는 함수 중에 하나입니다.
strcat 함수와 거의 동일한 동작을 하지만 차이가 있다면 복사할 크기를 지정해줄 수 있다는 특징이 있습니다.
(string.h 헤더파일에 있는 함수들 중 ~~n~~ 인 함수는 모두 크기를 지정할 수 있는 함수랍니다.
eg. strncpy, strncat, strncmp)
복사할 크기를 지정해 줄 수 있는 함수들의 가장 큰 장점은 buffer overflow를 방지할 수 있다는 점인데요.
정확한 크기만큼만 복사하기 때문에 많이들 사용합니다.
잠깐! 여기서 buffer overflow란??
buffer overflow를 이해하기 위해서는 컴퓨터 메모리 구조를 이해하셔야 되는데요. 컴퓨터 메모리 구조는 복작한 개념들이 포함되어 있으므로 다른 포스팅에서 다루겠습니다. 간단히 설명하면 배열이나 포인터에 할당된 메모리보다 큰 메모리를 할당할 경우 발생하게 됩니다.
그리고 또 하나 중요한 점은 strcat() 와 마찬가지로 des 문자열 마지막에 '\0'이 있어야 됩니다.
strcat() 함수는 des, src 모두 '\0' 문자를 기준으로 문자열을 잘랐지만 strncat() 함수는 des 문자열만 '\0'을 기준으로 묹자열을 구분하고 src 문자열은 입력된 크기만큼 문자열을 구분해줍니다.