source code
char **split(char *s)
{
int spaces = 0;
int start = 0;
int spl_i = 0;
char **spl;
for (int i = 0; s[i]; i++)
spaces += (s[i] == 32);
spl = malloc((spaces + 1) * sizeof(char *));
for (int i = 0; s[i]; i++)
{
if (s[i] == 32)
{
s[i] = 0;
spl[spl_i++] = s + start;
start = i + 1;
}
}
spl[spl_i++] = s + start;
spl[spl_i] = NULL;
return (spl);
}