Découper une chaîne de caractères
Bonjour,
je souhaiterais découper un chaine de caratère "mot1 \n mot2 \n mot3 \n" et stocker chaqun des "mots" dans un variable (ou plutot dans un tableau de *char). Je crois avoir trouvé pour ca une fonction répondant parfaitement à mes besoins, mais je ne parvient pas à l'utiliser. Il s'agit d'un fonction trouvée sur ce site ( lien ) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
char **str_split (const char *cs, const char *delim, int *p_size)
{
size_t size = 0;
char **ret = NULL;
if (cs && delim)
{
int start = 0;
int end = 0;
int length = 0;
const char *t = NULL;
void *tmp = NULL;
while ((t = strstr (&cs[start], delim)))
{
end = t - cs;
length = end - start;
if (length > 0)
{
size++;
tmp = realloc (ret, sizeof (*ret) * size);
if (tmp)
{
ret = tmp;
ret[size-1] = malloc (sizeof (**ret) * (length + 1));
if (ret[size-1])
{
strncpy (ret[size-1], &cs[start], length);
ret[size-1][length] = '\0';
}
else
{
fprintf (stderr, "Memoire insufisante");
exit (EXIT_FAILURE);
}
}
else
{
fprintf (stderr, "Memoire insufisante");
exit (EXIT_FAILURE);
}
}
start = end + 1;
}
size++;
tmp = realloc (ret, sizeof (*ret) * size);
if (tmp)
{
ret = tmp;
length = strlen (cs) - start;
if (length > 0)
{
ret[size-1] = malloc (sizeof (**ret) * (length + 1));
if (ret[size-1])
{
strcpy (ret[size-1], &cs[start]);
}
}
else
{
ret[size-1] = NULL;
}
}
else
{
fprintf (stderr, "Memoire insufisante");
exit (EXIT_FAILURE);
}
}
if (p_size)
{
*p_size = size-1;
}
return ret;
} |
Je ne comprends pas quels arguments il faut passer à cette fonction, ni le genre de valeur qu'elle retourne. Quelqu'un peut-il m'expliquer comment m'y prendre ?
Merci d'avance.