반응형
strncpy(3)
#include <string.h>
char *strncpy(char *dest, const char *src, size_t n);
strncpy(3)함수는 src 데이터를 dest에 null 값(0x00)을 만날때까지 또는 n 바이트까지 null 값(0x00)을 만나지 못하면 n바이트를 복사합니다. strncpy(3)함수의 특이사항은 n바이트까지 복사하기 전에 0x00을 만나면 나머지 부분을 n바이트까지 0x00으로 채웁니다. n 바이트까지 0x00을 만나지 못하면 null-terminate를 보장하지 않습니다.
※ 주의: OS마다 다르지만, 최신 LINUX에서는 src가 NULL이면 SIGSEGV 오류로 비정상 종료됩니다. dest에 할당된 buffer 크기가 n보다 작으면 SIGSEGV 오류로 비정상 종료될 수 있습니다.
파라미터
dest
- 복사의 target이 되는 buffer, dest가 NULL이면 SIGSEV 오류로 비정상 종료합니다.
- dest의 크기는 n 바이트 이상이어야 합니다. n 바이트까지 복사하는 중에
0x00을 만나지 못하면 0x00으로 문자열이 끝나지 않습니다.
- n바이트 이전에 0x00을 만나면 n바이트까지 나머지 부분을 0x00으로 채웁니다.
src
- 복사할 원본 문자열.
- src가 NULL이면 일부 UNIX에서는 ""처럼 인식되고, 최신 LINUX에서는 SIGSEGV로 비정상 종료합니다.
n
- 복사할 데이터의 최대 크기
RETURN
dest
- dest가 return됩니다.
활용 예제
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char buf[1024];
char s1[1024];
......
strncpy(buf, s1, sizeof(buf));
......
}
반응형
'C언어 header > string.h' 카테고리의 다른 글
strncat(3) - 문자열의 뒤에 문자열을 붙이기(n바이트 이내) (0) | 2019.09.25 |
---|---|
strcat(3) - 문자열을 뒤에 붙이기 (0) | 2019.09.25 |
strcpy(3) - 문자열끝까지 복사하기 (0) | 2019.09.25 |
memrchr(3) - 1바이트의 데이터 역순 찾기(GNU only) (0) | 2019.09.25 |
memchr(3) - 1바이트의 데이터 찾기 (0) | 2019.09.25 |