반응형
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;
}
반응형
'C언어 header > string.h' 카테고리의 다른 글
strrchr(3) - 문자열의 뒤에서부터 앞쪽으로 문자 검색 (0) | 2019.09.25 |
---|---|
strchr(3) - 문자열에서 문자 검색 (0) | 2019.09.25 |
strdup(3) - 문자열을 새로운 메모리 할당후 복제 (0) | 2019.09.25 |
strncasecmp(3) - 문자열을 n바이트까지 문자열 비교. (0) | 2019.09.25 |
strcasecmp(3) - 대소문자 구별없이 문자열의 끝까지 비교 (0) | 2019.09.25 |