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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define sortie "test.xls"
#define entree "Lib_Zone0.xls"
#define entree2 "Courants.xls"
#define MAXLIGNE 300000
#define MAX 100 /* nombre max de pas de temps */
#define MAXX 10000 /* nombre max de pas de temps */
#define TCOL (int)('V'-'A') /* Titres associés */
/********************
Main
***********************/
int main (void)
{
FILE *lib, *results, *simu;
char buffer[10000], titre[TCOL+1][MAX], *b;
double donnee[MAX], temps[MAX], Val[1][MAXX];
int ntemps, ligne, i, j, flag;
/* definition de fichiers d'entrée et de sortie*/
lib=fopen(entree,"rt");
results=fopen(sortie,"wt");
if (!lib || !results)
{ fprintf(stderr,"ERREUR de lecture des fichiers."); exit(1); }
/* ------------------------------
lire les temps
------------------------------ */
fgets(buffer,10000,lib);
printf("%s\n",buffer);
/* aller a la colonne TCOL et lire les titres*/
for (i=0, b=buffer; i<TCOL && b!=NULL; i++)
{
for (j=0; b[j]!='\t'; j++) titre[i][j]=b[j];
titre[i][j]='\0';
b=strchr(b,'\t'); b++;
}
/* lire les temps */
for (ntemps=0; ntemps<MAX; ntemps++, b++)
{
if (sscanf(b,"%lf",&temps[ntemps])<1) break; /* dernier ? */
if ((b=strchr(b,'\t'))==NULL) break; /* dernier ? */
}
for (j=0; j<TCOL; j++)
{
printf("titre[%d]=%s\n",j,titre[j]);
fprintf(results,"%s\t",titre[j]);// copie des titres dans le fichier results
}
fprintf(results,"SEU\t");// creation de la colonne SEU (titre)
for (i=0; i<ntemps; i++)
{
printf("t[%d]=%le\n",i,temps[i]);
fprintf(results,"%le\t",temps[i]); //copie des pas de temps des courants
}
fprintf(results,"\n");
/* ------------------------------
analyser les simulations
------------------------------ */
//début rajout
for (ligne=0, flag=0; ligne<MAXLIGNE && (!flag); ligne++)
{
if (fgets(buffer,10000,lib)==NULL)
{ flag=1; break; }
// lire les donnees d'origine (colonnes A-R)
for (i=0, b=buffer; i<TCOL; i++)
{
if (sscanf(b,"%lf",&donnee[i])<1)
{ fprintf(stderr,"ERREUR de lecture de donnee.\n"); exit(1); }
b=strchr(b,'\t');
if (b!=NULL) b++; /* decaler au prochain tab */
}
int neldo;
simu=fopen(entree2,"rt");
if (!simu)
{
printf("fichier %s n'existe pas.\n",entree2);
}
else
{
//printf("fichier %s: ouverture.\n",simul);
// 1 lignes entetes
fgets(buffer,10000,simu);
neldo=0;
//fgets(buffer,10000,simu);
// lire les donnees: 1ere linge temps
for (i=0, b=buffer; b!=NULL; i++)
{
if (sscanf(b,"%lf",&Val[j][i])<1) break;
//printf("eldoread: %lg\n",Val[j][i]);
b=strchr(b,'\t');
if (b!=NULL) b++; /* decaler au prochain tab */
}
if (j==0) neldo=i;
else if (neldo!=i)
{
fprintf(stderr,"Incompatibilite longueur lignes.\n");
exit(1);
}
fclose(simu);
// copier col 'A'..'U' dans le fichier de sortie
for (i=0; i<TCOL; i++)
fprintf(results,"%lg\t",donnee[i]);
// copier SEU
fprintf(results,"%lg\t",Val[1]['V'-'A']);// copier SEU
fprintf(results,"\n");
}
}
fclose(lib);
fclose(results);
return(0);
} |
Partager