strdup
strdup는 스트링을 복제해서 할당된 메모리에 넣고 리턴을 해주는 친구임
malloc을 사용해야함.
함수 원형
char *ft_strdup(const char *string)
구현
#include "libft.h"
char *ft_strdup(const char *string)
{
char *temp;
int i;
int count;
i = 0;
count = strlen(string);
temp = (char *)malloc(count * sizeof(char) + 1);
while (string[i])
{
temp[i] = string[i];
i++;
}
temp[i] = '\\0';
return (temp);
}
참고 사이트
strdup() — 스트링 복제
형식 #include char *strdup(const char *string); 참고: strdup 함수는 C++ 프로그램에서 사용 가능합니다. 프로그램이 __cplusplus__strings__ 매크로를 정의할 때만 C에서 사용 가능합니다. 언어 레벨 XPG4, 확장 설명
www.ibm.com
strlen
s의 주소값을 받은 친구의 길이를 세어주는 라이브러리
int ft_strlen(const char *s)
{
int i;
i = 0;
while (s[i] != '\\0')
{
i++;
}
return (i);
}
참고 사이트
[C언어/C++] strlen 함수(문자열 길이)에 대해서
[C언어/C++] strlen 함수(문자열 길이)에 대해서
안녕하세요. BlockDMask 입니다.오늘은 char*, char [] 타입의 문자열 길이에 대해서 이야기 해보려 합니다.즉. C언어 스타일 문자열의 길이를 구하는 함수에 대해서 알아보려합니다. > C언어 문자열 관
blockdmask.tistory.com
substr
함수 원형
char *ft_substr(char const *s, unsigned int start, size_t len)
이 함수는 s 문자열을 받아서 시작점인 start를 알려준다. 거기서 부터 len만큼 복사를 하게 된다.
- s 문자열
- s 문자열 복사 시작점 start
- len만큼 복사
예외 처리
- 문자열인 s 길이 보다 start가 더 길어버리면 NULL을 반환하는 것이 아니라 빈 문자열을 반환해야함
- 왜냐? abcd가 있고 start가 7이면 NULL값을 가리키는 것이 아니라 아무것도 가르키고 있지 않아서 빈 문자열
- 할당 부분에서 len이 문자열 s보다 길어지게 되면 남는 할당 공간이 생겨버린다.
- 그 부분을 제외하고자 (s문자열) - (start)을 하여 len을 다시 초기화한다.
#include "libft.h"
char *ft_substr(char const *s, unsigned int start, size_t len)
{
size_t i;
char *temp;
size_t cou;
cou = ft_strlen(s);
if (cou <= start)
return (ft_strdup(""));
if (len >= cou - start)
len = cou - start;
temp = (char *)malloc(sizeof(char) * (len + 1));
if (!temp)
return (0);
i = 0;
while (s[start] != '\\0' && i < len)
{
temp[i] = s[start];
start++;
i++;
}
temp[i] = '\\0';
return (temp);
}
참고 사이트
[C] 나만의 라이브러리 - substr, strjoin, strtrim, itoa
[C] 나만의 라이브러리 - substr, strjoin, strtrim, itoa
1. substr 함수 형태 char *my_substr(char const *s, unsigned int start, size_t len); 매개 변수 원본 문자열 문자열 s에 있는 하위 문자열의 시작점 하위 문자열의 길이 반환 값 잘라낸 문자열, 실패시 NULL 반환 설
wonillism.tistory.com
'42Seoul > libft' 카테고리의 다른 글
libft - strtrim, striteri, split (0) | 2023.03.24 |
---|---|
libft - strjoin, itoa, strmapi (0) | 2023.03.24 |
libft - strnstr, atoi, calloc (0) | 2023.03.24 |
libft - strrchr, memchr, memcmp (2) | 2023.03.24 |
libft - toupper, tolower, strchr (0) | 2023.03.24 |