c语言之字符串解析(AT指令设置命令参数解析)
void at_cmd_pasre(char *cmd) {
int32_t para_int_1 = 0;
char para_str_2[32] = { 0 };
char para_str_3[32] = { 0 };
char* p = cmd;
int ret = -1;
p = strstr(cmd,"+TEST=");
if (p != NULL) {
p += strlen("+TEST=");
sscanf(p, "%d", ¶_int_1);
printf("para_int_1=%d\r\n", para_int_1);
}
do {
p = strstr(p, ",");
if (p == NULL) {
break;
}
p += 1;
ret = sscanf(p, "\"%[^\"]\"", ¶_str_2);
if (ret != 1) {
printf("param is ommit\r\n");
}
else
printf("para_str_2=%s\r\n", para_str_2);
} while (0);
do {
p = strstr(p, ",");
if (p == NULL) {
break;
}
p += 1;
ret=sscanf(p, "\"%[^\"]\"", ¶_str_3);
if (ret != 1) {
printf("param is ommit\r\n");
}
else
printf("para_str_3=%s\r\n", para_str_3);
} while (0);
}
使用:
at_cmd_pasre("AT+TEST=1,\"12\",");
at_cmd_pasre("AT+TEST=1,\"12\"");