allocation **pointeur NULL via fonction
Bonjour à tous,
Pour mon projet, je dois récupérer des valeurs X et Y dans un fichier. A savoir, X et Y sont tout deux des tableaux (de double) situés sur une même ligne (par exemple x,x,x,x;y,y\n).
Aussi, la première ligne de ce fichier nous indique combien de ligne sont présentes, combien nous avons de valeurs x par ligne et combien de valeurs y par ligne.
Le fichier peut faire plusieurs milliers de lignes, et, je souhaiterais récupérer tout ça dans des tableaux (genre X[i][j] et Y[i][w]), via une fonction.
Cependant, mes tableaux sont initialisés à NULL dans la fonction principale, mais alloués dans une autre fonction.
Code:
1 2 3 4 5 6
|
double **Xtab = NULL;
double **Ytab = NULL;
get_file_vals(&Xtab, &Ytab); // les '&' sont là car la fonction attends un pointeur vers ces tableaux ; voir la fonction plus bas |
J'ai réussi à trouver une partie de la solution ici : https://www.developpez.net/forums/d1...null-fonction/
mais là où je galère, c'est pour les malloc / calloc :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
void get_file_vals(double ***Xtab, double ***Ytab)
{
// [...]
// nb_lignes = nombre de lignes à analyser
// x_nb = nombre de valeurs du vecteur X sur une ligne
// y_nb = nombre de valeurs du vecteur Y sur une ligne
*Xtab = calloc(nb_lignes, sizeof(double*));
*Ytab = calloc(nb_lignes, sizeof(double*));
for (int i = 0; i < x_nb; i++)
{
Xtab[i] = calloc(x_nb, sizeof(double));
Ytab[i] = calloc(y_nb, sizeof(double));
}
// [...] |
Pour info, je n'ai volontairement pas mis les tests d'allocation pour faciliter la lecture sur le forum.
Ce code me renvoie une erreur de segmentation, mais je suis incapable de savoir d'où vient l'erreur ; je ne vois pas trop comment manipuler une allocation dynamique sur un pointeur de tableau multiple...
Évidement, j'ai essayé plusieurs syntaxes au petit bonheur la chance, mais rien n'y fait.
Quelqu'un saurait m’orienter ?
Merci d'avance !