Lire des doubles à partir d'un fichier
poitou86
-
Marco la baraque Messages postés 1030 Statut Contributeur -
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.
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.
Configuration: Windows XP Firefox 2.0.0.12
1 réponse
-
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);-
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
-