Plutôt que retourner un tableau de pointeurs, qui serait de taille fixe, vous pouvez utiliser des paramètres de type sortie : avoir des char * et indiquer à la fonction qu'elle doit stocker ses résultats dedans.
/* Pour l'exemple, sortie_debut contiendra le debut de la chaine, sortie_fin la fin de la chaine.Le début et la fin sont tous les 2 passés en paramètre par souci de cohérence.Le début est également retourné pour pouvoir l'utiliser dans un if plus facilement (si vous le souhaitez, peut-être cela crée une confusion).*/char*expmatch(char*entree,char**sortie_debut,char**sortie_fin){*sortie_debut=entree;*sortie_fin=entree+strlen(entree);return*sortie_debut;}intmain(intargc,char**argv){char*debut;/* pas besoin d'initialiser */char*fin;if(expmatch("Hello world!",&debut,&fin)){/* debut et fin sont valides */}else{/* pas trouvé, debut et fin non valides (ou NULL) */}}
Vous pouvez également passer un tableau de pointeurs en paramètres qui sera utilisé en sortie.
voidexpmatch(char*entree,char*sorties[2]);
Si vous souhaitez vraiment retourner un tableau, alors il vous faudra utiliser de l'allocation dynamique (malloc et free).
# Deux paramètres
Posté par BFG . En réponse au message retourner un pointeur vers un tableau de pointeurs. Évalué à 4.
Plutôt que retourner un tableau de pointeurs, qui serait de taille fixe, vous pouvez utiliser des paramètres de type sortie : avoir des
char *et indiquer à la fonction qu'elle doit stocker ses résultats dedans.Vous pouvez également passer un tableau de pointeurs en paramètres qui sera utilisé en sortie.
Si vous souhaitez vraiment retourner un tableau, alors il vous faudra utiliser de l'allocation dynamique (malloc et free).