strncmp(3)

#include <string.h>

char *strndup(const char *s, size_t n);

strndup(3)함수는 n + 1 크기를 malloc(3)으로 할당후 문자열 s를 n바이트 복사한 후 return합니다. strndup(3)은 항상 null-terminated 문자열을 보장합니다. 0x00(또는 '\0')로 끝납니다. malloc(3)한 데이터를 return하므로 return 받은 메모리는 반드시 free(3)를 통하여 메모리를 해제해야 합니다.

 

strndup(3)은 malloc(3) + strncpy(3) 과 같습니다.

 

 

파라미터

s
    - 복제할 문자열
n
    - 복제할 문자열 크기

 

RETURN

NULL 아님
    - 정상적으로 복제한 문자열

NULL
    - 문자열 복제가 실패하였으며, 상세한 오류 내용은 errno에 설정됩니다.
      ENOMEM : 문자열 복제를 위한 메모리 할당에 실패하였습니다.

 


활용 예제

 

#include <string.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char *ptr;     
    char src[256];

    ......

    /* strndup(3)의 return은 반드시 pointer로 선언된 변수이어야 합니다. */
    if((ptr = strndup(src, 100)) == NULL) {
        fprintf(stderr, "문자열 복제를 위한 메모리가 부족합니다.\n");
        return 1;
    }

    ...

    /* free(3)로 메모리 해제를 하지 않으면 메모리 leak이 발생합니다. */
    free(ptr);

    ......

    return 0;
}

 

블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요