[C/C++] strncpy()는 NULL문자를 넣어주지 않는다.
```c
int main() {
int size = 4;
char buf[size] = {'*', '*', '*', '*'};
strncpy(buf, "asd", size - 1);
// buf[size - 1] = '\0';
printf("%s\n", buf);
return 0;
}
```
```
asd*�FUUUU
```
따라서 명시적으로 ``c '\0'``을 넣어주어야 한다.
쓰려는 src문자열의 길이가, 명시된 `` n``보다 작은 경우는 NULL문자를 넣어주지만,
src문자열의 길이가 `` n``과 같거나 큰 경우 `` n``까지만 쓰고 그냥 그만두기 때문에, 명시적으로 넣어주는 것이 좋다.
'Languages & Frameworks > C C++' 카테고리의 다른 글
[C++] lambda (bind 보다는 lambda를 쓰자) (0) | 2018.09.03 |
---|---|
[C++] 컨테이너 안에 클래스가 들어있을 때, 클래스 안의 멤버들을 순회하는 이터레이터를 반환받는 방법 + mem_fn (0) | 2018.09.03 |
[C++] \r이 포함된 문자열 출력할 때 이상하게 출력되는 현상 (0) | 2018.08.21 |
[C++] 맵 : unordered_map (hash_map) (2) | 2018.08.20 |
[C++] directory listing (traversal) (0) | 2018.08.10 |