IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème de lecture de fichier, conversion de 1.00000e+01 en 10.00000


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut Problème de lecture de fichier, conversion de 1.00000e+01 en 10.00000
    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 !!!

    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;
    }
    Voila quelques lignes de mon fichier de matrice :
    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

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Cela correspond-t-il à ce que vous voulez?
    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
    #include <stdio.h>
     
     
    #define SIZE 100
     
     
    int main(void)
     {
     FILE *inf,*outf;
     double d;
     int res,count;
     
     if ((inf=fopen("IM_10.dat","r"))==NULL)
      {
      printf("Impossible d'ouvrir le fichier\n");
      return -1;
      }
     if ((outf=fopen("plot.dat","w"))==NULL)
      {
      printf("Impossible de créer le fichier\n");
      fclose(inf);
      return -1;
      }
     count=0;
     while ((res=fscanf(inf,"%lf",&d))!=EOF && res)
      {
      fprintf(outf,"%g",d);
      if (++count==SIZE)
       {
       fprintf(outf,"\n");
       count=0;
       }
      else fprintf(outf,"\t ");
      }
     fclose(outf);
     fclose(inf);
     printf("Fait\n");
     return 0;
     }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut Merci
    Merci beaucoup...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POI] Problème de lecture des fichiers Word
    Par Dari dans le forum Documents
    Réponses: 9
    Dernier message: 05/07/2007, 14h08
  2. Problème de lecture sur fichier ini.
    Par braoru dans le forum Delphi
    Réponses: 2
    Dernier message: 28/07/2006, 15h34
  3. [DOM4J] Problème de lecture de fichier xml avec dom4j
    Par santana2006 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/04/2006, 16h52
  4. Problème de lecture de fichier Excel
    Par cocaetjusdorange dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2006, 11h08
  5. Problème de lecture de fichier Oracle 9.2
    Par fortlow dans le forum Oracle
    Réponses: 4
    Dernier message: 14/11/2005, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo