cmd版漏洞百出的计算器

来源:互联网 发布:收进工具书的网络词 编辑:程序博客网 时间:2024/04/28 12:58

利用数组前移来计算一串数据加减乘除

//获取输入数据char szData[256] = {0};  //保存输入的数据char szDataTemp[128] = {0};int nData[128] = {0};//保存输入的数字char *pData = NULL;char szFuhao[128] = {0};//保存符号int i,j,k;i = 0;//字符串长度pData = szData;while(true)//获取输出内容{*pData = getchar();if(*pData == '\n'){break;}pData++;}//输出测试//for(j = 0;j<i;j++)//{//printf("%c",szData[j]);//}//分离获取到的数据内容int nFlag = 0;j = 0;pData = szData;for(k = 0;k<strlen(szData);k++){if(isalnum(*pData)){szDataTemp[j] = *pData;j++;}else{szDataTemp[j] = '\0';nData[nFlag] = atoi(szDataTemp);nFlag++;j = 0;}pData++;}//分离符号pData = szData;i = 0;for(k=0;k<strlen(szData);k++){if(isalnum(*pData)){}else{szFuhao[i] =*pData;i++;}pData++;}//算法设计8+9/3-3*5  //先判断乘除for(i = 0;i<strlen(szFuhao);i++){if(szFuhao[i] == '*'||szFuhao[i] == '/'){if(szFuhao[i] =='*'){nData[i+1] = nData[i]*nData[i+1];//把数据存放后一位}else{nData[i+1] = nData[i]/nData[i+1];}for(j =i;j<strlen(szFuhao);j++)//数据前移{nData[j] =nData[j+1];szFuhao[j] = szFuhao[j+1];}}}for(i=0;i<strlen(szFuhao);){if(szFuhao[i]=='+'){nData[i+1] = nData[i]+nData[i+1];}else{nData[i+1] = nData[i]-nData[i+1];}for(j=i;j<strlen(szFuhao);j++){nData[j] =nData[j+1];szFuhao[j] = szFuhao[j+1];}}printf("%d",nData[0]);//输出测试//for(k = 0;k<nFlag;k++)//{//printf("%d ",nData[k]);//}//for(k=0;k<strlen(szFuhao);k++)//{//printf("%c",szFuhao[k]);




0 0
原创粉丝点击