• # Deux paramètres

    Posté par . 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.

    /* 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;
    }
    int main(int argc, 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.

    void expmatch(char *entree, char * sorties[2]);
    
    

    Si vous souhaitez vraiment retourner un tableau, alors il vous faudra utiliser de l'allocation dynamique (malloc et free).