/*===========================*/ /* gccKIK2CSV.c */ /*===========================*/ #include #include #include #include #include #define Nmax 35000 void main_part(char *fnameR,char *fnameW); void Trim(char *s); /*------------------------------------------------------------------------------*/ int main(int argc, char *argv[]) { char *fnameR=argv[1];/*読込ファイル名*/ char *fnameW=argv[2];/*書込ファイル名*/ main_part(fnameR,fnameW); return 0; } /*------------------------------------------------------------------------------*/ void main_part(char *fnameR,char *fnameW) { FILE *fin,*fout; char scom[256]; char str1[50]; char str2[50]; char strw[50]; char dat[256],*ww; static double acc[Nmax]; double dt,r1,r2,rr,accmax,asum; int i,j,nd,c; /*データ読込*/ fin=fopen(fnameR,"r"); for(i=1;i<=16;i++){ fgets(dat,sizeof dat,fin); strcpy(str1,""); strncat(str1,dat,18); /*dat[]の先頭18文字以降をstr1[]に複写*/ for(j=18;j<=strlen(dat);j++){ strw[j-18]=dat[j]; /*dat[]の19文字以降をstrw[]に複写*/ } strcpy(str2,""); strncat(str2,strw,strlen(strw)-1);/*改行文字削除*/ Trim(str2); /*空白削除*/ printf("%02d *%s*%s*\n",i,str1,str2); switch(i){ case 1: /*書込用コメント作成*/ strcpy(scom,str2); strcat(scom," "); strncat(scom,fnameR,6); strcat(scom," "); ww=strtok(fnameR,"."); strcat(scom,strtok(NULL,".")); strcat(scom," Max.acc="); break; case 11: /*サンプリングピッチ確定*/ dt=1.0/strtod(str2,&ww); printf("----dt=%.3f(sec) ww=%s\n",dt,ww); break; case 14: /*スケールファクター確定*/ r1=strtod(strtok(str2,"/"),&ww); r2=atof(strtok(NULL,"/")); rr=r1/r2; printf("----r1=%.0f r2=%.0f rr=%.6f ww=%s\n",r1,r2,rr,ww); break; } } fgets(dat,sizeof dat,fin); /*Memo.空読み*/ i=0; while(fgets(dat,sizeof dat,fin)!=NULL){ ww=strtok(dat," "); acc[i]=atof(ww);i=i+1;/*データは整数であるが倍精度実数型に変換*/ while(ww!=NULL){ ww=strtok(NULL," "); if(isspace(*ww)!=0)break;/*標準空白文字(ここでは改行)ならループ脱出*/ acc[i]=atof(ww);i=i+1; } } fclose(fin); nd=i-1; /*加速度計算*/ asum=0.0; for(i=0;i<=nd;i++){ acc[i]=acc[i]*rr; /*読込値にスケールファクターを乗じる*/ asum=asum+acc[i]; /*平均値計算用処理*/ } asum=asum/(double)(nd+1);/*平均値計算*/ accmax=0.0; for(i=0;i<=nd;i++){ acc[i]=acc[i]-asum; /*平均値を減じることにより加速度値確定*/ if(accmax=0;i--){ if(s[i]!=' ')break; } s[i+1]='\0'; /*先頭から空白でない位置を捜しその位置以降をstrcpy*/ for(i=0;i<=strlen(s);i++){ if(s[i]!=' ')break; } strcpy(s,&s[i]); } /*------------------------------------------------------------------------------*/