모두의 코드
C 언어 레퍼런스 - strncpy 함수
작성일 : 2010-05-09
이 글은 42023 번 읽혔습니다.
아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?
strncpy
#include <string.h> // C++ 에서는 <cstring> char* strncpy(char* destination, const char* source, size_t num);
문자열에서 일부 문자들 만을 복사한다.
source
에서 destination
으로 source
의 처음 num
개의 문자들 만을 복사(NULL 도 포함해서) 한다.
num
보다 source
의 문자 수가 더 적다면은 모자란 부분은 0 으로 생각되어서 destination
에 복사가 된다. 다시 말해 source
가 "abc" 인다, num
이 5 라면 destination
에는 "abc\0\0" 가 들어가게 된다.
strncpy 함수는 복사시 destination
끝에 반드시 NULL
문자를 붙이는 것이 아니므로 사용에 주의를 해야 한다.
인자
destination
destination
배열을 가리키는 포인터로 문자열이 복사될 곳이다.
source
복사 될 C 문자열이다.
num
source
에서 복사 할 문자의 개수 이다.
리턴값
destination
을 리턴한다.
실행 예제
/* str2 에 str1 의 첫 5 문자, 즉 "To be" 를 복사해 넣는다. 이 때, str2 에는 자동으로 끝에 NULL 문자가 붙는 것이 아니므로 인위적으로 넣어주어야 한다. 이 예제는 http://www.cplusplus.com/reference/clibrary/cstring/strncpy/ 에서 가져왔습니다. */ #include <stdio.h> #include <string.h> int main() { char str1[] = "To be or not to be"; char str2[6]; strncpy(str2, str1, 5); str2[5] = '\0'; puts(str2); return 0; }
실행 결과
함수 구현 예
/* 다음 소스는 http://www.jbox.dk/sanos/source/lib/string.c.html 에서 가져온 것입니다. */ char *strncpy(char *dest, const char *source, size_t count) { char *start = dest; while (count && (*dest++ = *source++)) count--; if (count) while (--count) *dest++ = '\0'; return start; }
참고 자료
strcpy: 문자열을 복사한다.
memcpy : 메모리 블록을 복사한다.
memmove: 메모리 블록을 옮긴다.
memchr : 메모리 블록에 문자를 위치시킨다.
memcmp : 두 개의 메모리 블록을 비교한다.
memset : 메모리 블록을 채운다.
댓글이
5 개 있습니다!
강좌에 관련 없이 궁금한 내용은
여기를 사용해주세요
또는 직접 입력하세요 (댓글 수정시 비밀번호가 필요합니다)
댓글을 불러오는 중입니다..