根据字符串进行计算,计算结果保存到文件

img


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写入文件即可