saluts,

nous sommes débutants en langage C.
nous avons le programme suivant:
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;
}
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
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.