I write a code to split string by delimiter. I want the function get a string and return its strings divided.
It actually works except for one thing. when I give string "test", it works. but when I give string "1234 4567", I can access the value '4567', but not '1234'. (garbage value.) also "1234 2345 3456 ..." results garbage value in only first argument '1234'.
I thought that using malloc() twice causes problem in the same pointer, but it doesn't. What is the problem for my codes?
char    **ft_set_char(char *str)
{    
    int     i;
    int     j;
    int     k;
    char    *str_c;
    char    **ret;
    k = 0;
    j = 0;
    ret = (char **)malloc(10);
    str_c = (char *)malloc(5);
    i = 0;
    while (*(str + i) != '\0')
    {    
        if (*(str + i) == ' ')
        {
            *(str_c + k) = '\0';
            k = 0;
            *(ret + j) = str_c;
            j++;
            i++;
            str_c = (char *)malloc(5);
        }
        *(str_c + k) = *(str + i);
        i++;
        k++;
    }
    *(str_c + k) = '\0';
    *(ret + j) = str_c;
    *(ret + j + 1) = NULL;
    return (ret);
}
 
     
    