Ecrire et lire des données en C
Bonjour!
Dans le but de tester des fonctions de traitements du signal, je voulais générer un fichier de donnée, l'enregistrer, puis le réouvrir et tester mes fonctions dessus.
Mais je ne parviens pas à faire cela correctement, je crois que j'ai vraiment besoin de lumière sur ce qui est écrit et ce qui est lu, car le C est assez nouveau pour moi et j'ai encore du mal à savoir ce que je manipule.
Après avoir épluchés plusieurs discussions, il m'a semblé qu'il était plus facile d'écrire en binaire, mais je suis ouverte à d'autre suggestion ;)
Mon code pour générer mon fichier de données est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <stdio.h>
#include <stdlib.h>
#include <fftw3.h>
#include <math.h>
int main()
{
double in[1000]={0};
int i=0;
for (i=0; i<1001;i++)
{
in[i]=sin(i)+2*sin(i*2);
}
FILE* fichier = NULL;
fichier = fopen("datasin.bin", "r+");
if ((fichier = fopen("datasin.bin", "wb")) == NULL) {
fprintf(stderr, "Echec à l'ouverture");
return(-1);}
fwrite(&in, sizeof(double), 1001, fichier);
fclose(fichier);
return 0;
} |
Datasin.bin est effectivement créé et est non vide, quand je l'ouvre avec un éditeur de texte il y a un blocs de caractères "^+™ÐG@‰æÐ|Vã¿ÒÚ…ÞÆ» ..." donc je suppose que j'ai bien écrit en binaire dedans.
Ensuite j'essaye d'ouvrir ce fichier et de le lire, pour cela mon code est:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <stdio.h>
#include <stdlib.h>
#include <fftw3.h>
#include <math.h>
int main()
{
int i=0;
double in1[1000]={0};
FILE* fichier = NULL;
if ((fichier = fopen("datasin.bin", "rb")) == NULL) {
fprintf(stderr, "Echec à l'ouverture");
return(-1);}
for (i=0; i<1001;i++)
{
fscanf(fichier,"%f",&in1[i]);
printf("%f\n",in1[i]);
}
fclose(fichier);
return 0;
} |
Ce qui me chagrine c'est que le printf ne m'affiche que des 0.000 ... :cry:
Pouvez vous m'aider à diagnostiquer d'où vient le problème?
Merci à tous et bonnes fêtes