Fonction qui retourne un tableau de char*
saluts,
nous sommes débutants en langage C.
nous avons le programme suivant:
Code:
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;
} |
c'est très simple. la fonction "cavaco" retourne toutes les possibles divisions d'un mot, comme "cheval", en deux parties:
Code:
1 2 3 4 5 6 7
|
c heval
ch eval
che val
chev al
cheva l
cheval |
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?
par exemple:
Code:
1 2 3 4
|
{"c heval",
"ch eval",
...} |
et, donc, utiliser le valeur revenue?
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.