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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Ensuite j'essaye d'ouvrir ce fichier et de le lire, pour cela mon code est:
Ce qui me chagrine c'est que le printf ne m'affiche que des 0.000 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Pouvez vous m'aider à diagnostiquer d'où vient le problème?
Merci à tous et bonnes fêtes
Partager