Post

(C/C++) strncpy()는 NULL문자를 넣어주지 않는다.

1
2
3
4
5
6
7
8
9
int main() {
int size = 4;
char buf[size] = {'\*', '\*', '\*', '\*'};
strncpy(buf, "asd", size - 1);
// buf[size - 1] = '\0';
printf("%s\n", buf);
return 0;
}

1
2
3
asd\*�FUUUU

따라서 명시적으로 '\0'을 넣어주어야 한다. 쓰려는 src문자열의 길이가, 명시된 n보다 작은 경우는 NULL문자를 넣어주지만, src문자열의 길이가 n과 같거나 큰 경우 n까지만 쓰고 그냥 그만두기 때문에, 명시적으로 넣어주는 것이 좋다.

This post is licensed under CC BY 4.0 by the author.