jvais déjà essayer avec le pointeur de pointeur, mais j´arrive pas à m´imaginer ce que je vais devoir traiter, et surtout comment je vais le traiter:
Je passe en paramètre le pointeur d´un pointeur. Donc dans mon programme je définis un char *pathf qui est le pointeur qui va pointer vers la chaine, donc je l´initialise à NULL, et je définis un char **ppath, qui pointe vers le pointeur pathf. Donc je l´initialise à?... &? 
Ensuite, quand je vais devoir allouer la mémoire pour la chaine, je fais *chaine ( donc chaine est le pointeur qui pointe vers pathf, d´où *chaine = pathf) donc *chaine = ( char *(??? pas sûr??))calloc(sizeof(char *), i+1);
Éclairez moi svp, parce que j´ai un peu de mal à comprendre ce casse-tête!