strndup
|
헤더 파일에 정의됨
<string.h>
|
||
|
char
*
strndup
(
const
char
*
src,
size_t
size
)
;
|
(C23 이후) | |
최대
size
바이트까지
src
가 가리키는 문자열로부터 복사된 내용을 담고 있는 널 종료 바이트 문자열에 대한 포인터를 반환합니다. 새로운 문자열을 위한 공간은 마치
malloc
이 호출된 것처럼 할당됩니다. 첫
size
바이트 내에서 널 종결자를 찾지 못한 경우, 복제된 문자열 끝에 추가됩니다.
반환된 포인터는 메모리 누수를 피하기 위해 free 에 전달되어야 합니다.
오류가 발생하면 널 포인터가 반환되고 errno 가 설정될 수 있습니다.
목차 |
매개변수
| src | - | 복제할 널 종료 바이트 문자열에 대한 포인터 |
| size | - |
src
에서 복사할 최대 바이트 수
|
반환값
새로 할당된 문자열에 대한 포인터, 또는 오류 발생 시 널 포인터.
참고 사항
이 함수는 POSIX strndup 과 동일하지만, 오류 발생 시 errno 를 설정할 수 있으나 필수는 아닙니다.
예제
#include <string.h> #include <stdio.h> #include <stdlib.h> int main(void) { const size_t n = 3; const char *src = "Replica"; char *dup = strndup(src, n); printf("strndup(\"%s\", %lu) == \"%s\"\n", src, n, dup); free(dup); src = "Hi"; dup = strndup(src, n); printf("strndup(\"%s\", %lu) == \"%s\"\n", src, n, dup); free(dup); const char arr[] = {'A','B','C','D'}; // NB: no trailing '\0' dup = strndup(arr, n); printf("strndup({'A','B','C','D'}, %lu) == \"%s\"\n", n, dup); free(dup); }
출력:
strndup("Replica", 3) == "Rep"
strndup("Hi", 3) == "Hi"
strndup({'A','B','C','D'}, 3) == "ABC"
참고 항목
|
(C23)
|
문자열의 복사본을 할당함
(함수) |
|
(C11)
|
문자열을 다른 문자열로 복사함
(함수) |
|
메모리를 할당함
(함수) |
|
|
이전에 할당된 메모리를 해제함
(함수) |