C언어 header/string.h
strncpy(3) - 문자열 n바이트 복사하기
자연&사람
2019. 9. 25. 22:56
반응형
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));
......
}
반응형