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
|
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void Pause(void)
{
printf("Pause : Press return to continue\n");
getc(stdin);
}
int main()
{
int N=2; // mon nombre de particules
int i,j,k; // des compteurs
FILE * pfile1=fopen("MeanPTm.txt","r");
FILE * pfile2=fopen("Mean.txt","w+"); // mon fichier de sorties
char * NameFileOutput[N];
FILE ** fileOutput=malloc(N*sizeof(*fileOutput));
assert(fileOutput!=NULL);
// ici je cree mes strings "Particle1.txt", "Particle2.txt", etc...
for(i=0;i<N;++i)
{
char s[]="Particle";
char buf[5];
sprintf(buf,"%u",i+1);
strcat(s,buf);
strcat(s,".txt");
NameFileOutput[i]=strdup(s);
printf("name = %s\n",NameFileOutput[i]);
fileOutput[i]=fopen(NameFileOutput[i], "r");
assert(fileOutput[i]!=NULL);
}
double a,b,c;
char line1[35000],line3[35000];
double tab[25],theta; // theta : variable qui va recuperer la valeur de ma 1e colonne de mon fichier Particle*.txt
for(i=0;i<25;++i) tab[i]=0.;
char * line32=malloc(35000*sizeof(*line32));
assert(line32!=NULL);
for(i=1;i<=72001;i++)
{
printf("i = %d\n",i);
fgets(line1,sizeof line1, pfile1);
sscanf(line1,"%lf%lf%lf",&a,&b,&c);
printf("%f\t%f\t%f\n",a,b,c);
for(j=0;j<N;++j)
{
fgets(line3,sizeof line3, fileOutput[j]);
assert(fgets!=NULL);
printf("line3 = %s\n",line3); // l'erreur est ici : line3 est nulle !!
strcpy(line32,line3);
theta=strtod(line32,&line32);
strtod(line32,&line32);
strtod(line32,&line32);
for(k=0;k<25;++k) tab[k]+=strtod(line32,&line32);
}
for(k=0;k<25;++k) tab[k]/=N;
fprintf(pfile2,"%14.6le\t%14.6le\t%14.6le",theta,a,b);
for(k=0;k<25;++k) fprintf(pfile2,"\t%14.6le",tab[k]);
fprintf(pfile2,"\n");
}
fclose(pfile1); fclose(pfile2);
for(i=0;i<N;++i) fclose(fileOutput[i]);
free(fileOutput); fileOutput=NULL;
free(line32); line32=NULL;
return EXIT_SUCCESS;
} |
Partager