➰ 코딩 부트캠프/42 seoul

[0 Circle] Libft - ft_substr, ft_strjoin

 사과개발자 2021. 1. 4. 22:05

📌ft_substr

문자열 s의 start위치부터 len의 길이만큼 저장해서 주소반환

char *ft_substr(char const *s, unsigned int start, size_t len);

➕ 매개변수 (Parameters)

  • s : 복사할 원본 문자열의 주소
  • start : 원본 문자열을 자를 시작 위치
  • len : 복사할 길이

➕ 반환값 (Return)

  • char * : 복사한 문자열의 주소 반환

➕ 설명 (Description)

➕ 코드 (Code)

#include "libft.h"

char        *ft_substr(char const *s, unsigned int start, size_t len)
{
    char    *tmp;
    size_t    i;

    i = 0;
    if (!s)
        return (0);
    if (start >= ft_strlen(s))
    {
        if (!(tmp = malloc(1)))
            return (0);
        tmp[0] = '\0';
        return (tmp);
    }
    if (!(tmp = malloc(len + 1)))
        return (0);
    while (i < len && s[start + i])
    {
        tmp[i] = s[start + i];
        i++;
    }
    tmp[i] = '\0';
    return (tmp);
}

📌ft_strjoin

s1과 s2를 합쳐서 그 주소를 반환

char        *ft_strjoin(char const *s1, char const *s2);

➕ 매개변수 (Parameters)

  • s1 : 합칠 첫번째 문자열
  • s2 : 합칠 두번째 문자열

➕ 반환값 (Return)

  • char * : 합친 문자열의 주소 반환

➕ 설명 (Description)

➕ 코드 (Code)

#include "libft.h"

char        *ft_strjoin(char const *s1, char const *s2)
{
    char    *tmp;
    int        i;

    i = 0;
    if (!s1 && s2)
        return (ft_strdup(s2));
    else if (s1 && !s2)
        return (ft_strdup(s1));
    else if (s1 && s2)
    {
        if (!(tmp = malloc(ft_strlen(s1) + ft_strlen(s2) + 1)))
            return (0);
        while (*s1)
            tmp[i++] = *(s1++);
        while (*s2)
            tmp[i++] = *(s2++);
        tmp[i] = '\0';
    }
    else
        return (0);
    return (tmp);
}
반응형