Salut,
Je connais pas de fonction qui fait ça.
Par contre, tu peux te débrouiller avec une petite astuce, c'est de transformer les espaces en caractères de fin de chaîne : '\0' et de faire pointer chaque début de chaine sur des pointeurs.
Le mieux serait d'utiliser une liste chainée. Mais en attendant tu peux probablement de contenter de déclarer un tableau de pointeurs statique.
En bref ta fonction devrait ressembler à ça:
void split_space (char *chaine, char *tab[100])
{
unsigned int i;
len=strlen(chaine);
j=0;
for (i=0;i<len;i++)
{
if (chaine[i] == ' '){
chaine[i] = '\0'; //Remplace espace par fin de chaine
while (chaine[i+1] == ' ')
{
i++; // Tant qu'il y a des espaces on avance.
}
if (chaine[i+1] == '\0'){
tab[j] = NULL;
return;
}
else{
tab[j] = &chaine[i];
j++;
}
if (j==100){
return;
}
}
}
}
A utiliser comme ceci:
char *chaine="machin bidule chouette";
char *tab[100];
split_space(chaine, tab);
J'ai pas testé mais ça doit pas être loin de ça.
Tu est limitée à 100 espaces. Avec une liste chaine, la memoire et la seule limite.