int main(int argc,char * argv[])
{
FILE * Fw,Fr;
char *p;
int a=0,b=0,i,num1=0,num2=0,c=0;
char bufr[128]=0,str[64]=0,bufw[128]=0
Fr=fopen(argv[1],"r");
Fw=fopen(argv[2],"w");
fread(bufr,128,1,Fr);
close(Fr);
p=strtok(bufr,"\n");
while(p){
snprintf(str, sizeof(str), "%s",p);
for(i=0;i<strlen(str);i++)
{
if(str[i]=='('){ num1=1;num2=0;break;}
else if(str[i]==')') (num1=0;num2=0;}
else if(str[i]==',' ) {num1=0;num2=1;break}
if(num1==1) a=a*10+atoi(str[i]);
else if(num2==1) b=b*10+atoi(str[i]);
}
if(strstr(str,"add")!=NULL)
{
c=a+b;
}else if(strstr(str,"Sub")!=NULL)
{
c=a-b;
}elseif(strstr(str,"muti")!=NULL)
{
c=a*b;
}elseif(strstr(str,"div")!=NULL)
{
c=a/b;
}elseif(strstr(str,"doubleMe")!=NULL)
{
c=a*2;
}else printf("err\n");
p=strtok(NULL,"\n");
snprintf(bufw, sizeof(bufw), "%s=%d\n",str,c);
fwrite(bufw,strlen(bufw),1,Fw)
}
close(Fw)
}
将add,sub,muti等定义为常量,fopen打开文件逐行读取,匹配算法常量,然后获取算法常量后的两个括号之间的内容,如果不是doubleMe,则用逗号进行拆分,获得计算数据后进行相应计算,再fwrite写入文件即可