【发布时间】:2018-07-25 17:58:38
【问题描述】:
我使用 arduino MEGA 来解析 url 的参数部分。 参数的顺序如何无关紧要。我有以下代码,我用 strtok 尝试过。
char text[] = "ssid=SSID&pwd=PASSWORD&userId=1234"
会分裂
ssid=SSID
pwd=PASSWORD
userId=1234
并再次将其拆分为键和值
ssid
SSID
pwd
PASSWORD
userId
1234
我尝试使用 strtok 进行第一次拆分。
char *ptr;
ptr = strtok(params, "&");
while (ptr != NULL) {
Serial.println(urlParam);
ptr = strtok(NULL, "&");
}
输出如预期:
输出:
ssid=SSID
pwd=PASSWORD
userId=1234
然后下一个拆分:
char *ptr;
ptr = strtok(params, "&");
while (ptr != NULL) {
char *paramKey;
char *paramValue;
paramKey = strtok(ptr, "=");
Serial.println(paramKey);
if (paramKey == 'ssid'){
paramValue = strtok(NULL, "=");
Serial.println(paramValue);
ssidName = paramValue;
}
if (paramKey == 'pwd'){
...
}
if (paramKey == 'userId'){
...
}
ptr = strtok(NULL, "&");
}
但输出只是
ssid
SSID
看起来循环工作不正常。
我在哪里犯了错误? 有没有其他方法可以解决这个字符串?
【问题讨论】:
-
你不能像这样在不同的 strtok 目标之间来回切换——你必须在再次使用 strtok 之前完成所有第一个 strtok。