-2
如何解析此字符串GET /STA/ID=HelloWorld/Pass=Testin123 HTTP/1.1
首先,我需要检查STA
,如果存在,请继续扫描字符串。放ID
值在这种情况下HelloWorld
应该是char数据类型SSID
和Pass
值存储,在这种情况下Testin123
应该是char数据类型的商店Pass
解析HTTP字符串
它首先要确定的STA
字符串的存在。如果它不存在,请不要进入循环。如果退出,请搜索ID
和Pass
。存储它。
现在的问题是我无法存储值ID
和pass
。也无法搜索STA
。
char GetString[] = "GET /STA/ID=Test/Pass=123 HTTP/1.1";
char *get = strtok(GetString, " ");
char *request = strtok(NULL, " ");
char *rtype = strtok(NULL, " ");
char *FirstPart;
int main()
{
if (request != NULL)
{
FirstPart = strtok(request,"/");
while(FirstPart)
{
if (!strncmp(part, "STA"))
{
//Print STA Found
if(!strncmp(part, "ID=", 3))
{
//Store value of ID
}
if(!strncmp(part, "Pass=", 5))
{
//Store the Pass
}
}
}
FirstPart =strtok(NULL,'/');
}
}
这是一个奇怪的地方停下来,你得到了令牌化的权利,但没有测试与strcmp字符串相等吗? – covener
@covener我已添加完整的代码。 –
问题是,小错误隐藏你的重大错误。有一个无效的调用strncmp,没有长度参数。有一个无效的调用strtok与字符第二个参数,应该是一个字符串。你的while循环遍历令牌,但是如果该令牌是“STA”,则只做任何事情,但如果它是它,则检查它是否是别的东西,但是你知道它是“STA”,所以其他if子句永远不会匹配。 – MAP