Namespaces
Variants

strndup

From cppreference.net
헤더 파일에 정의됨 <string.h>
char * strndup ( const char * str, size_t size ) ;
(동적 메모리 TR)

최대 size 바이트까지 str 이 가리키는 문자열로부터 복사된 내용을 포함하는 널 종료 바이트 문자열에 대한 포인터를 반환합니다. 첫 size 바이트 내에서 널 종결자를 발견하지 못할 경우, 복제된 문자열에 널 종결자가 추가됩니다.

반환된 포인터는 메모리 누수를 피하기 위해 free 에 전달되어야 합니다.

오류가 발생하면 널 포인터가 반환되고 errno 가 설정될 수 있습니다.

Dynamic Memory TR의 모든 함수들과 마찬가지로, strndup 함수는 구현체가 __STDC_ALLOC_LIB__ 를 정의하고, 사용자가 __STDC_WANT_LIB_EXT2__ 를 정수 상수 1 으로 정의한 후 string.h 를 포함할 경우에만 사용 가능함이 보장됩니다.

목차

매개변수

str - 복제할 null 종료 바이트 문자열에 대한 포인터
size - str 에서 복사할 최대 바이트 수

반환값

새로 할당된 문자열에 대한 포인터, 또는 오류 발생 시 널 포인터.

참고 사항

이 함수는 POSIX strndup 과 동일하지만, 오류 발생 시 errno 를 설정할 수 있으나 필수는 아닙니다.

예제

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    const char *s1 = "String";
    char *s2 = strndup(s1, 2);
    printf("strndup(\"String\", 2) == %s\n", s2);
    free(s2);
}

출력:

strndup("String", 2) == St

참고 항목

(dynamic memory TR)
문자열의 복사본을 할당합니다
(함수)
한 문자열에서 다른 문자열로 특정량의 문자를 복사합니다
(함수)
메모리를 할당합니다
(함수)