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 ) :
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 ?
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; }
Merci d'avance.
Partager