Lire des doubles à partir d'un fichier

poitou86 -  
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,

J'essaye de lire des valeurs de type double à partir d'un fichier mais sans succès.

Voilà un extrait du code :

FILE *pFile = fopen("data.txt", "r");
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
{
fscanf(pFile, "%s", tmp);
double x = atof(tmp);
Tab[i][j] = x;
}
}
fclose(pFile);

Si vous me corrigez le problème...et comment je peux écrire des entiers dans un fichier ????
MERCI.
A voir également:

1 réponse

Sri Lumpa Messages postés 177 Statut Membre 69
 
Corrige moi si je me trompe mais je crois que pour le fscanf tu dois lui transmettre le pointeur sur ta variable tmp :
...
    fscanf(file, "%s", &tmp);
    Tab[i][j] = (double)atof(tmp);
...

Je pense que ça devrait mieux fonctionner comme ça.

Au cas où ce n'est pas le cas, peux-tu indiquer ce que ton programme ressort à cet endroit (genre le message d'erreur ou un comportement inattendu) ?

Ensuite pour écrire des entiers dans un fichiers tu as tout bêtement la fonction "fprintf"
FILE * file = fopen("ton_fichier", "w");
fprintf(file, "%d", ton_int);
0
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Bonsoir,
Le cast n'est pas nécessaire : tu peux utiliser %lf pour lire les doubles. Comme le Sri Lumpa, il faut pointer sur l'adresse de ta variable (mais je crois qu'avec des char* ça fonctionne quand même).
#include <stdlib.h>
#include <stdio.h>
#define N 3
#define M 3

int main(int argc, char *argv[])
{
    double tab[N][M];
    double tmp;
    FILE *pFile = fopen("data.txt", "r");
    for(int i=0; i<N; i++) {
             for(int j=0; j<M; j++) {
                      fscanf(pFile, "%lf", &tmp);
                      tab[i][j] = tmp;
                      printf("%lf\n", tab[i][j]);
             }
    }
    fclose(pFile); 
    system("PAUSE");
    return EXIT_SUCCESS;
}


Avec la matrice suivante :
1.01 2.22 3.1
4.59 5 6.85
7.74 8.56988745652 9.0000001
0