示例#1
0
std::wstring TestUtils::exec(LPCTSTR szCmd) 
{
    FILE* pipe = _tpopen(szCmd, _T("rt"));
    if (!pipe) return L"ERROR";
    wchar_t buffer[4096];
    std::wstring result;
    while(!feof(pipe)) 
	{
    	if(fgetws(buffer, 4096, pipe) != NULL)
    		result += buffer;
    }
	wtrim(result);
    _pclose(pipe);
    return result;
}
示例#2
0
int main(int argc, char ** argv)
{  int from, to, i,j;
   FILE *fFrom, *fTo;
   char buff[BSIZE];
   char * part[4]={"vars","func","prtcls","lgrng"};
   int ok=1;

   if(argc!=4) ok=0; 
   else if(1!=(i=sscanf(argv[2],"%d",&from))) { ok=0;printf("i=%d\n",i);}
   else if(1!=(i=sscanf(argv[3],"%d",&to)  )) { ok=0;printf("i_=%d\n",i);}

   if(!ok)
   { printf("This programs needs 3 arguments\n"
     "1)path to destination of models in LanHEP format\n"
     "2)Model number N (like varsN.mdl)\n"
     "3)Target model number. The model will be created in the current directory\n");
     return 1;
   }        

   for(i=0;i<4;i++)
   {
     sprintf(buff,"%s/%s%d.mdl",argv[1],part[i],from);
     if(access(buff,R_OK))
     {  printf("Source file '%s' not found\n",buff);
        return 2;
     }
   }
   
   sprintf(buff,"cp %s/%s%d.mdl %s%d.mdl",argv[1],part[3],from,part[3],to);
   system(buff);
   
   for(i=0;i<3;i++)
   { int k=0;
     sprintf(buff,"%s/%s%d.mdl",argv[1],part[i],from);
     fFrom=fopen(buff,"r");
     sprintf(buff,"%s%d.mdl",part[i],to);
     fTo=fopen(buff,"w");
     fgets(buff,BSIZE,fFrom);  fputs(buff,fTo);
     fgets(buff,BSIZE,fFrom);  fputs(buff,fTo);

     switch(i)
     { 
       case 0:   /* vars*.md */
       for(;fgets(buff,BSIZE,fFrom);)
       { if( buff[0] != '=' ) fputs(" ",fTo);
         fputs(buff,fTo);
       }
       break;
       
       case 1:   /* func*.md */
       for(k=0;1==fscanf(fFrom,"%[^|]%*c",buff) ;)
       { if(buff[0]=='=') {fprintf(fTo,"%s\n",buff); break;}
         fprintf(fTo," %s|",buff);
         fscanf(fFrom,"%[^|]%*c",buff); 
         if(k==0) {fprintf(fTo,"%s&",buff); k=1;} else fprintf(fTo,"%s%%",buff);
         fgets(buff,BSIZE,fFrom); fputs(buff,fTo);
       }
       break;
       
       case 2:  /* Particles */
       for(j=0;j<3;j++){ fscanf(fFrom,"%[^|]%*c",buff); fprintf(fTo,"%s|",buff);}
       fprintf(fTo," number |");
       fgets(buff,BSIZE,fFrom);  fputs(buff,fTo);       
  
       for(;;)
       { char name[40],symb[40],aux[40];
         int nn;
         if( fscanf(fFrom,"%[^|%]%*c",buff)==EOF ) break;
         fprintf(fTo,"%s",buff);
         if(buff[0]=='=')break; else fprintf(fTo,"|");
         strcpy(name,buff); 
         
         fscanf(fFrom,"%[^|]%*c",symb); fprintf(fTo,"%s|",symb); 
         fscanf(fFrom,"%[^|]%*c",buff); fprintf(fTo,"%s|",buff);
         
         wtrim(symb);
         nn=mcnum(symb,name);
         fgets(buff,BSIZE,fFrom);
         
         if(nn==0)
         { sscanf(buff,"%*[^|]%*c%*[^|]%*c%*[^|]%*c%*[^|]%*c%[^|]",aux);
           wtrim(aux);
           if(strcmp(aux,"*")) printf("Warning! Monte Caro code for %s (%s) is unknown.\n"
                               " Replaced by zero. Improve it!\n",symb, name);
         }   
           
         fprintf(fTo,"%8d|",nn);
         fputs(buff,fTo);         
       }
       break; 
     }   
     fclose(fFrom); fclose(fTo);
   }

   sprintf(buff,"extlib%d.mdl",to);
   fTo=fopen(buff,"w");
   sprintf(buff,"%s/%s%d.mdl",argv[1],part[0],from);
   fFrom=fopen(buff,"r");
   fscanf(fFrom,"%[^\n]",buff);
   fprintf(fTo,"%s\n",buff);
   fprintf(fTo,"Libraries\n"
 "External libraries  and citation                                     <|\n"
 "=======================================================================\n");
   fclose(fTo),fclose(fFrom);          
   return 0;
}