この文字列を解析するにはGET /STA/ID=HelloWorld/Pass=Testin123 HTTP/1.1
まず、STA
をチェックする必要があります。 Pass
HTTP文字列を解析する
それが最初の文字列におけるSTA
の存在を確認すべきであるCHARデータ型に格納なければならない。この場合Testin123
に、CHARデータ型SSID
とPass
の値に店舗でなければならない。この場合HelloWorld
にID
の値を置きます。存在しない場合は、ループに入りません。終了する場合は、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への無効な呼び出しがあり、長さの引数はありません。文字2番目の引数を持つstrtokへの無効な呼び出しがあります。これは文字列でなければなりません。あなたのwhileループはトークンを踏んでいますが、そのトークンが "STA"であれば何も行いませんが、それが他のものかどうかを確認しますが、 "STA"であることを知っているので、 。 – MAP