saluts,
nous sommes débutants en langage C.
nous avons le programme suivant:
c'est très simple. la fonction "cavaco" retourne toutes les possibles divisions d'un mot, comme "cheval", en deux parties:
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 #include <stdio.h> #include <string.h> char *cavaco (char *x) { for (int a = 0; a < strlen(x); a++) { char *pars1 = (char *)malloc(a * sizeof(char)); char *pars2 = (char *)malloc((strlen(x) - a) * sizeof(char)); strncpy(pars1, x, a+1); pars1[a+1] = '\0'; sprintf(pars2, "%s", &x[a+1]); printf("%s %s\n", pars1, pars2); free(pars1); free(pars2); } } int main(int argc, char *argv[]) { cavaco("cheval"); return 0; }
la doute est: comment est-ce que nous pouvons faire la fonction retourner un array de strings - array de array de chars (char**) avec ces valeurs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 c heval ch eval che val chev al cheva l cheval
par exemple:
et, donc, utiliser le valeur revenue?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 {"c heval", "ch eval", ...}
s'il vous plaît, souvenez-vous que la taille de chaque string dans l'array ne serait pas toujours strlen(x) + 1 (dans le cas de "cheval", ça serait 7, à cause du " " -> "c heval", "ch eval", ...), parce que nous pouvons vouloir changer la fonction "cavaco" pour diviser le mot de plus de façons différents, par exemple "che eval" (donc, il peut être plus divisions possibles, ça dépend des critères de division que nous pouvons vouloir utiliser).
merci d'avance.
Partager