int Longueur_fichier(char Nom_chemin_fichier[100])
{
int Taille_fichier =0;
char texte [256];
FILE *fic = fopen(Nom_chemin_fichier, "r"); // Je crée un pointeur de type FILE chemin pour Mac
if (fic == NULL)
{
printf("caguade\n");
exit(1);
}
while(fgets(texte,255,fic)!=NULL)
Taille_fichier++;
fclose(fic);
return Taille_fichier;
}
Et une nouvelle fonction qui alloue et remplie ce tableau avec les valeurs du fichier
void Rempli_alloc(float *Adresse_Du_Tableau_a_remplir, int Taille_Du_tableau, char Nom_chemin_fichier[100])
{
char texte [256];
int i=0;
Adresse_Du_Tableau_a_remplir = malloc(Taille_Du_tableau*sizeof(float)); //j'alloue de la mémoire pour mon Tableau: i*la taille de mon type de donnée (ici 4 octets car float).
//Dans mon pointeur j'ai l'adresse du début de mon allocation (si ok) ou NULL (si caguade).
if (Adresse_Du_Tableau_a_remplir == NULL) // Si l'allocation a échoué
{
exit(2); // On arrête immédiatement le programme
}
FILE *fic = fopen(Nom_chemin_fichier, "r");
while(fgets(texte,255,fic)!=NULL) // fgets fait défiler les éléments du fichier
{
*(Adresse_Du_Tableau_a_remplir+i) = strtof(texte,NULL); // Dans le contenu de l'adresse je converti en float le texte que fgets m'a récupéré
printf(" toto %.2f\n", *(Adresse_Du_Tableau_a_remplir+i)); // j'affiche (pour test)
i++;
}
fclose(fic);
}
Le test avec le printf à la fin se passe bien : je vois défiler mes floats
Par contre de retour dans mon main, quand j'essaye de visualiser le contenu de ce tableau avec par exemple
printf("Tabl%f\n",*Tableau);
Mon programme se bloque ce qui me fait penser qu'un truc n'est pas encore bien compris avec les pointeurs.
Une âme charitable pour m'expliquer ou je me trompe ?
Ton problème vient du passage de paramètres aux fonctions. Le pointeur que tu envois à la fonction et copié dans le paramètre de la fonction. Le paramètre lui est une variable locale à la fonction, qui n'existe donc que dans la fonction.
Donc si tu veux modifier le pointeur de la fonction main dans la fonction, il faut envoyer son adresse à la fonction afin que la fonction puisse accéder aux pointeur de la fonction main via son adresse. C'est le même principe que pour scanf.
Une autre solution, c'est de retourner l'adresse du tableau depuis la fonction et de l'affecter au pointeur.
Et il ne faudra pas oublier la libération de la mémoire (un malloc, un free).
J'ai compris et j'ai réussi à retourner l'adresse du pointeur.
A+
Encore les pointeurs.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.