gmzorz icon

ft_strntok

gmzorz | PRO | 08/08/20 08:27:47 AM UTC | 0 ⭐ | 1189 👁️ | Never ⏰ | []
C |

1.11 KB

|

None

|

0 👍

/

0 👎

#include "libft.h"
#include <stdio.h>
 
/*
**  ft_strntok - extract tokens from strings 
**
**  <const char *str>       input string
**  <const char *delim>         delimiter set
**  <int count>         delimiter count, takes string before delimiter
**
**  Parses a string into a sequence of tokens.
**  Splits based on delimiter(s) and returns sequence
**
**  Similar to MS-DOS FOR /F "tokens=* delims=*"
*/
 
char        *ft_strntok(const char *str, const char *delim, int count)
{
    char    *tokens;
    int index = 0;
 
    tokens = (char *)ft_calloc(1, ft_strlen(str) + 1);
    while (*str != '\0' && count > 0)
    {
        while (ft_strchr(delim, *str) == NULL)
        {
            tokens[index] = *str;
            str++;
            index++;
        }
        if (count == 0 || *str == '\0')
            return (tokens);
        while (ft_strchr(delim, *str) != NULL)
        {
            str++;
            if (ft_strchr(delim, *str) == NULL)
                return (ft_strntok(str, delim, count - 1));
        }
        tokens++;
        str++;
    }
    return (NULL);
}
 
int     main(void)
{
    printf("[%s]", ft_strntok("SPLIT THIS FUCKING STRING", ' ', 2));
        // 0 returns SPLIT
        // 1 returns THIS
        // 2 returns FUCKING
        // 3 returns STRING
}

Comments