14 #include "libft.h"
15
16 char *ft_substr(char const *s, unsigned int start, size_t len)
17 {
18 size_t i;
19 size_t j;
20 char *ptr;
21
22 if (s == NULL) //하위문자열이 null이라면 null반환
23 return (NULL);
24 if (!(ptr = (char*)malloc(sizeof(*s) * (len + 1)))) ////복사해줄 새로운 메모리를 할당해줌, 만들어진 문자열이 null이라면 null반환
25 return (NULL);
26 i = 0;
27 j = 0;
28 while (s[i] != '\0') //우선 s문자열을 끝까지 확인한다.
29 {
30 if (j < len && i >= start) //2가지 조건을 만족시켜야함
1. len만큼 문자열을 반환(마지막에 \0을 붙이는데 붙이기전에 크기를 맞춰줘야한다.
2. start가 문자열보다 클때를 생각해줘야한다.
만약 start가 더 크다면 반복문으로 들어가지 않는다.
31 {
32 ptr[j] = s[i]; //복사해준다.
33 j++; //변수를 증가시키는데 반환할 총 크기이다.
34 }
35 i++;
36 }
37 ptr[j] = '\0'; //마지막에 널 추가
38 return (ptr); //포인터 반환
39 }