Bonjour,
j'ai fait un programme en C qui me sors des fichiers contenant chacun une matrice (100 lignes et 100 colones) de nombres (format scientifique : "1.000000000000e+01"). Chaque ligne est séparée par un "\n" et chaque colone par un "\t " (une tabulation puis un espace). Je n'ai pas fait expres pour l'espace apres la tabulation, mais mon programme tourne pendant une dizaine d'heure pour me fournir ce resultat, donc je dois faire avec ce que j'ai. Je veux tracer des courbes à partir de ces fichiers, manque de bol le logiciel pour tracer les courbes ne reconnait pas la notation exponentielle. Je dois donc tout reconvertir en double : "1.000000" comme si javais utilisé le code format %lf. Petite complication en + il peut y avoir un - devant le nombre ce qui fait passer le nombre de caractères de 18 à 19 ... J'ai donc essayé de faire un programme qui ouvre mes fichiers et me les convertit. Cela ne marche pas impossible de trouver le nombre de bit a lire pour avoir le nombre en entier... Je ne pense pas que ce soit un probleme vraiment compliqué donc je solicite votre aide...
Voila mon pseudo code qui : 1 ne marche pas, 2 ne prend pas en compte les -. Dans le doute et n'ayant pas trouvé la bonne solution j'utilise des sizeof pour determiner la taille d'un \n... Cela vous fera surement rire !!!![]()
Voila quelques lignes de mon fichier de matrice :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #include<stdlib.h> #include<stdio.h> #include<math.h> #include<time.h> FILE *source,*cible; #define SIZE 100 int main(void){ char buffer[150]; char _buffer[150]; char space[]=" "; char tab[]="\t"; char nline[]="\n"; char nb[]="1.000000000000e+01"; char solution[16][150]; int length,cpt; cible=fopen("plot.dat","a"); source=fopen("IM_10.dat","r"); if (!(cible && source)) { fprintf(stderr,"Probleme d'ouverture de fichier\n"); exit(-1); } cpt=0; length=1; while(!feof(source)){ if((cpt++)%SIZE==0 && (cpt-1)!=0){ fread(&_buffer,1,sizeof(nline),source); fprintf(cible,"\n"); } fread(&buffer,1,sizeof(nb),source); fread(&_buffer,1,sizeof(tab)+sizeof(space),source); fprintf(cible,"%s\t ",buffer); } fclose(source); fclose(cible); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -1.334075054782e-04 -2.477041073169e-04 -3.463296659516e-04 -4.306374326802e-04 -5.018074807827e-04 -5.613764575382e-04 -6.106343946927e-04 -6.510710593560e-04 -6.836695319828e-04 -7.096594195696e-04 -7.296637039214e-04 -7.446497328144e-04 -7.549086406914e-04 -7.611470973326e-04 -7.633308906242e-04 -7.618690480777e-04 -7.563681881165e-04 -7.468535944771e-04 -7.324843885051e-04 -7.127469632723e-04 -6.861792507841e-04 -6.514623573394e-04 -6.061998670163e-04 -5.478365294512e-04 -4.725991771645e-04 -3.764544646163e-04 -2.556700000163e-04 -1.144275566851e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -1.265114370597e-04 -2.952713935786e-04 -4.468224224016e-04 -5.729474449281e-04 -6.756778252247e-04 -7.581614805998e-04 -8.240124313602e-04 -8.757677398116e-04 -9.162803102707e-04 -9.471292775342e-04 -9.704091826544e-04 -9.868397167295e-04 -9.978191753788e-04 -1.003302833301e-03 -1.004041198764e-03 -9.993191441726e-04 -9.892854461156e-04 -9.726573655288e-04 -9.490339574764e-04 -9.166820040647e-04 -8.747192442758e-04 -8.211068623500e-04 -7.546009983233e-04 -6.730969352596e-04 -5.753073312305e-04 -4.596576521856e-04 -3.256751325031e-04 -1.730519111966e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -1.256899548306e-04 -2.284545105168e-04 -3.138234885223e-04 -3.850375963318e-04 -4.444192718726e-04 -4.936235204041e-04 -5.342090871490e-04 -5.672608797253e-04 -5.939669989917e-04 -6.150245110718e-04 -6.313510695961e-04 -6.433322602179e-04 -6.516537438751e-04 -6.564210998727e-04 -6.580807293228e-04 -6.564487474203e-04 -6.516797342893e-04 -6.432438536982e-04 -6.308931395509e-04 -6.136235435769e-04 -5.905760899408e-04 -5.600089792548e-04 -5.200440352683e-04 -4.676263816794e-04 -3.988907090527e-04 -3.076404879775e-04 -1.832679597589e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -2.372340661596e-04 -4.111971476829e-04 -5.478052392604e-04 -6.567796318295e-04 -7.439454347215e-04 -8.130543889633e-04 -8.676610527494e-04 -9.100305152992e-04 -9.427419598285e-04 -9.670655383149e-04 -9.848090035345e-04 -9.963964927066e-04 -1.002940912505e-03 -1.004123782757e-03 -1.000417453357e-03 -9.908632079468e-04 -9.753460351853e-04 -9.523795703330e-04 -9.213233674002e-04 -8.802935486955e-04 -8.282100729035e-04 -7.629585648980e-04 -6.831675121007e-04 -5.867413562760e-04 -4.722574814994e-04 -3.378302717095e-04 -1.816075818925e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -1.095959126035e-04 -1.959573440327e-04 -2.653497596273e-04 -3.219223732230e-04 -3.683112173125e-04 -4.064472161857e-04 -4.376166202261e-04 -4.629903248594e-04 -4.833101633421e-04 -4.994100617141e-04 -5.117192833082e-04 -5.208560901489e-04 -5.270117004193e-04 -5.306162510920e-04 -5.316382152256e-04 -5.302990155696e-04 -5.263184001389e-04 -5.196431904982e-04 -5.096666569367e-04 -4.959265419431e-04 -4.773182658692e-04 -4.526984918913e-04 -4.200856126112e-04 -3.770527796397e-04 -3.198239282371e-04 -2.432097480459e-04 -1.395634193963e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -2.149305993527e-04 -3.893071480918e-04 -5.296242907862e-04 -6.424678053922e-04 -7.326672937444e-04 -8.045135488158e-04 -8.609936079549e-04 -9.052009853458e-04 -9.389819810713e-04 -9.645756275658e-04 -9.829009363223e-04 -9.954525209282e-04 -1.002337650024e-03 -1.004370532711e-03 -1.000949454730e-03 -9.922639531483e-04 -9.771118931253e-04 -9.551164847112e-04 -9.245952203644e-04 -8.846733738891e-04 -8.333235062806e-04 -7.692601278841e-04 -6.902621960589e-04 -5.947291225440e-04 -4.803437442652e-04 -3.450932918025e-04 -1.861356922793e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -8.534728851048e-05 -1.494614262262e-04 -1.992809294042e-04 -2.389484347868e-04 -2.710361198894e-04 -2.971186801287e-04 -3.183670365545e-04 -3.355269891398e-04 -3.493052655458e-04 -3.601119942575e-04 -3.684442590267e-04 -3.745151364853e-04 -3.786794742269e-04 -3.809918371894e-04 -3.816708905415e-04 -3.806104873953e-04 -3.778639099683e-04 -3.731280816166e-04 -3.662206665644e-04 -3.565528179574e-04 -3.435614089612e-04 -3.261731548874e-04 -3.031306383240e-04 -2.724183344999e-04 -2.313757127809e-04 -1.760403611781e-04 -1.011049827620e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -2.053278755056e-04 -3.770679803891e-04 -5.181650810847e-04 -6.326520322014e-04 -7.248616306672e-04 -7.982468239428e-04 -8.563271460311e-04 -9.014964141514e-04 -9.364229172256e-04 -9.625303032971e-04 -9.817073385559e-04 -9.945073450956e-04 -1.002101688089e-03 -1.004272022270e-03 -1.001529365832e-03 -9.929882303474e-04 -9.785564529201e-04 -9.567950348949e-04 -9.270696824686e-04 -8.875102487058e-04 -8.370062314380e-04 -7.733791723044e-04 -6.950998463265e-04 -5.997646498970e-04 -4.853991424608e-04 -3.492714758023e-04 -1.886431817653e-04 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00
Partager