www.pudn.com > TestContant.rar > TestConstant.c
/* *说明:Input.txt是输入测试文件,out.txt是输出结果. */ #include#include #include #include #define keyword_amount 3 char *keyword[2][keyword_amount]={{"Pi","E","Degree"}, {"0.314159265359E1","0.271828182846E1","0.174532E-1"}}; /*in our DFA,we have 7 states and 6 kinds of input+other input*/ signed char table[7][7]={ /*digit,'.','+','-','E','\n',other*/ {1,6,-1,-1,-1,-1,-1}, {1,2,-1,-1,-1,7,-1}, {2,-1,-1,-1,3,7,-1}, {5,-1,4,4,-1,7,-1}, {5,-1,-1,-1,-1,-1,-1}, {5,-1,-1,-1,-1,7,-1}, {2,-1,-1,-1,-1,-1,-1}}; int string2int(char *string) { int num=0,i; for(i=0;i =0;j--) { tmp=tmp/10+part[j]-'0'; } num+=tmp/10; /*calcute part3*/ if('E'==string[i]||'e'==string[i]) i++; j=0; flag=10; if('-'==string[i]) { flag=0.1; i++; } if('+'==string[i]) i++; part[0]='\0'; while('\0'!=string[i]) { part[j]=string[i]; i++; j++; } part[j]='\0'; for(i=string2int(part);i>0;i--) num*=flag; sprintf(string,"%1.12e",num); } void main (int argc, char *argv[]) { char ch,buffer[64]; int i,j,state,tmp; FILE *fin,*fout; char fnMat[13], fnSci[13], command[13+6]; if (argc<2 || argc>3) { printf("none filename"); exit(0); } strlwr(argv[1]); if ( strstr (argv[1], ".mat") ) strcpy (fnMat, argv[1]); else { strcpy (fnMat, argv[1]); strcat (fnMat, ".mat"); } if (argc==3) { strlwr(argv[2]); if ( strstr (argv[2],".sci") ) strcpy (fnSci, argv[2]); else { strcpy (fnSci, argv[2]); strcat (fnSci, ".sci"); } } else { strcpy (fnSci, fnMat); fnSci [strlen(fnSci)-3]='s'; fnSci [strlen(fnSci)-2]='c'; fnSci [strlen(fnSci)-1]='i'; } fin=fopen (fnMat, "r"); fout=fopen(fnSci,"w"); if(NULL==fin || NULL==fout) { printf("file open error."); exit(0); } ch=fgetc(fin); while(!feof(fin)) { if(' '==ch || '\n'==ch) ch=fgetc(fin); else if(isalpha(ch)) /*if ch is a character*/ { i=0; do { buffer[i]=ch; i++; ch=fgetc(fin); }while('\n'!=ch); buffer[i]='\0'; for(i=0;i