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.
A voir également:
- Lire des doubles à partir d'un fichier
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
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 :
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"
...
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);
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 :