Post

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

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

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

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