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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.