处理类似这样的字符串(2.05,-90)(12.1,120)提取出数据

来源:互联网 发布:linux重启服务器命令 编辑:程序博客网 时间:2024/05/01 16:51
//处理类似这样的字符串(2.05,-90)(12.1,120)
//(时间,角度) MCU中提取并得出数据void CmdAction(char CmdStr[]){char* pt ;unsigned int n50Ms =0;int Angel =0;pt = CmdStr;while(*pt)//一直处理,直到数据处理完{if(*pt == '(')//判断开头为 '('{pt = strchr(CmdStr,'.'); //找到小数点 *pt = '*';if( *(pt - 2) == '(' )//(1.2,8)  小数点前2位为‘(’时{n50Ms = ( *(pt-1) -'0' ) * 20  + ( *(pt + 1)-'0' )*2 ;}else if(*(pt - 3) == '(')//(10.6,-91) 小数点前 3位为 ‘(’{n50Ms = ( *(pt-2)-'0' ) * 200 +( *(pt-1)- '0')*20 + (*(pt+1)-'0')*2;}}pt = strchr(CmdStr,',');//find ','And point next char*pt = '#';pt ++ ;if('0'<= *pt && *pt <= '9')//判断数字,{while(*pt != ')')//在 ')' 之前{Angel *= 10;Angel += *pt++ - '0';}}else if (*pt++ == '-'){while(*pt != ')')//在 ')' 之前处理字符串{Angel *= 10;Angel += *pt++ - '0';}Angel = - Angel;}else ;pt++;if (n50Ms != 0 && Angel != 0){printf("\nn50Ms=%d Angel=%d",n50Ms,Angel);n50Ms =0;Angel =0;}}}int main(){char str1[] = "(0.2,9)(2.21,15)(22.21,150)(0.2,-9)(2.21,-15)(22.21,-150)";char str2[] = "(12.2,-190)";CmdAction(str1);printf("\n\n\n\n\n\n\n");while(1);return 0;}