关于文件数据处理
											
程序代码:我写了一个对文件里面数据处理的程序,具体做法是读取文本,装入数组中然后进行计算。但是我是半路出家只能对纯数字文本进行处理,但是每次出的结果是按时间间隔一段出来的,我现在的做法是把数据提出来重新放到一个新的文件里面,数据太多时就无法处理了。请问大家有是办法处理这个的?
求大神帮忙,不胜感激!!!!
具体文件在最后面dump2.zip。
程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
    int id;
    int type;
    float x;
    float y;
    float z;[local]3[/local]
} Data;
int main()
{
    Data tmp[2800]; //定义一个临时变量,存储每一行数据
    Data result[2800]; //这个数组长度要与文件行数相一致,不能小于
    int n,i=1,k=1,count=0; float sum,S,m,x1,y1,z1;int chains;
    FILE *infile;
   
    infile=fopen("dump.lammpstrj","r");
    if(infile==NULL)
    {
        printf("\nFailed to open the file");
        exit(1);
    }
   
    fgets( tmp, sizeof(tmp), infile ); //跳过首行
    i=1;
    while( fgets( tmp, sizeof(tmp), infile ) ) //读每一行
    {
        sscanf( tmp,"%d %d %f %f %f",&(result[i].id),&(result[i].type),&(result[i].x),&(result[i].y),&(result[i].z)); //放到数组中
        printf("%d %d  %d     %f     %f   %f\n",i,result[i].id,result[i].type,result[i].x,result[i].y,result[i].z); //测试显示到屏幕上
        i++;   
    }
    fclose(infile);
   i=1;S=0;sum=0;chains=1;//计算链取向率,根据分子链长度设定N,n,最后要除以K=N*(n-2)。
   while(chains<=100)
   {  
     
       for(i=k;(i+2)<=2800;i++)
       {
           x1=(result[i+2].x-result[i].x);
           y1=(result[i+2].y-result[i].y);
           z1=(result[i+2].z-result[i].z);
           m=y1*y1/(x1*x1+y1*y1+z1*z1);
           S=S+(3*m-1)/2;printf("%f\n",S);//过程没问题
           if( (i+2)%28==0 )
           {
            sum=sum+S;
            S=0;
            k=i;
            k=k+3;
            count++;printf("%f\n",sum);
            break;
           }
          
       }
       chains++;
   }
 
   n=(i+2)/count;
   chains=chains-1;
   printf("%d\n",n);
   printf("%d\n",chains);  //检查链与主链骨架数是否正确
   printf("%f\n",sum/(chains*(n-2)));
   system("pause");
    return 0;
}							
	


											
	    

	
