strncpy

자주 하는 실수

학생들이 자주 하는 실수

실수 1: 널문자 빠뜨리기

char dest[10];
strncpy(dest, "Hello", 5);
printf("%s", dest);  // ❌ 쓰레기 값 출력될 수 있음

// 올바른 방법
strncpy(dest, "Hello", 5);
dest[5] = '\0';  // ✅
printf("%s", dest);

실수 2: 배열 크기와 복사 크기 혼동

char dest[10];
strncpy(dest, src, 10);  // ❌ 널문자 공간 없음!
strncpy(dest, src, 9);   // ✅ 널문자 위한 1바이트 남김
dest[9] = '\0';

실수 3: 원본 시작 위치 계산 실수

char src[20] = "ABCDEFGH";

strncpy(dest, src + 2, 3);  // "CDE" (0부터 시작하므로)
// src[0]='A', src[1]='B', src[2]='C'
배열 인덱스는 0부터 시작합니다. src + 2는 세 번째 문자를 가리킵니다.

댓글

댓글 본문