-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