반응형

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));

    ......
}
반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,