728x90
반응형
char *ft_strcpy(char *dest, char *src)
{
int count;
count = 0;
while (src[count])
{
dest[count] = src[count];
count++;
}
dest[count] = '\0';
return (dest);
}
man page에 검색해 보자.
소속 헤더파일 :
#include <string.h>
함수 프로토타입:
char *strcpy(char *dst, const char *src);
/* dst는 복사한 것을 붙여넣을 문자열, src는 복사되는 문자열 */
char *strncpy(char *dst, const char *src, size_t len);
/* dst는 복사한 것을 붙여넣을 문자열, src는 복사되는 문자열, len은 복사할 길이 */
함수 설명:
The strcpy() function copies the string src to dst (including the terminating '\0' character.)
strcpy() 함수는 문자열 src를 dst에다 복사한다. 단, 가장 마지막에 존재하는 '\0' 널 문자도 달아준다.
The strncpy() function copies at most len characters from src into dst. If src is less than len characters long, the remainder of dst is filled with '\0' characters. Otherwise, dst is not terminated.
strncpy() 함수는 최대 길이 len 만큼 src에서 가져와서 dst에다 복사한다. 만약 src 길이가 len 보다 작다면, 나머지 dst 값은 '\0' 널 문자로 채워진다. 그렇게 하지 않으면 dst는 끝이 맺어지지 않은 문자열이 되기 때문이다.
리턴 값:
The strcpy() and strncpy() functions return dst.
strcpy()와 strncpy() 함수는 dst를 리턴 값으로 가짐. char *dst를 파라미터로 받았기에 return dst; 해주면 된다.
예시:
The following sets chararray to ``abc\0\0\0'':
char chararray[6];
(void)strncpy(chararray, "abc", sizeof(chararray));
The following sets chararray to ``abcdef'':
char chararray[6];
(void)strncpy(chararray, "abcdefgh", sizeof(chararray));
Note that it does not NUL terminate chararray because the length of the
source string is greater than or equal to the length argument.
The following copies as many characters from input to buf as will fit and
NUL terminates the result. Because strncpy() does not guarantee to NUL ter-
minate the string itself, this must be done explicitly.
char buf[1024];
(void)strncpy(buf, input, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
This could be better achieved using strlcpy(3), as shown in the following
example:
(void)strlcpy(buf, input, sizeof(buf));
Note that because strlcpy(3) is not defined in any standards, it should only
be used when portability is not a concern.
내가 작성한 함수:
char *strcpy(char *dest, char *src)
{
int count;
count = 0;
while (src[count])
{
dest[count] = src[count];
count++;
}
dest[count] = '\0';
return (dest);
}
strcpy() 함수
char *strncpy(char *dest, char *src, unsigned int n)
{
unsigned int count;
count = 0;
while (src[count] && count < n)
{
dest[count] = src[count];
count++;
}
while (count < n)
dest[count++] = '\0';
return (dest);
}
strncpy() 함수
728x90
반응형
'CS 지식 > C, C++' 카테고리의 다른 글
[C] write 함수 (0) | 2023.01.20 |
---|---|
[C] strstr 함수 (0) | 2023.01.20 |
[C] strcat, strncat 함수 (0) | 2023.01.20 |
[C] strcmp, strncmp 함수 (0) | 2023.01.19 |
[C] strlcpy, strlcat 함수 (0) | 2023.01.19 |