strncpy

주의사항

주의사항

1. 널문자가 자동으로 안 붙음!

char dest[10];
strncpy(dest, "Hello World", 5);
// dest = "Hello" (널문자 없음!)

dest[5] = '\0';  // 반드시 수동으로 추가!
왜 중요한가? 널문자 없으면 printf, strcmp 등이 오작동하고 쓰레기 값까지 읽어버립니다!

2. 안전한 사용 패턴

// 패턴 1: 수동으로 널문자 추가
strncpy(dest, src, sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '\0';

// 패턴 2: snprintf 사용 (더 안전)
snprintf(dest, sizeof(dest), "%s", src);

3. 시작 위치 지정

char src[20] = "Hello World";

// 처음부터 복사
strncpy(dest, src, 5);       // "Hello"

// 중간부터 복사
strncpy(dest, src + 6, 5);   // "World"
//                 ↑ 포인터 연산으로 시작점 이동

댓글

댓글 본문
버전 관리
anton
현재 버전
선택 버전
graphittie 자세히 보기