2014-03-05 29 views
0

是否有將字符串解析爲k,v對的簡單方法?C:將字符串解析爲鍵值對

GET/HTTP/1.1 
Host: localhost:1337 
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
Cookie: JSESSIONID.e5614f49=1ns34hepyv53k1hg1o78k3z4zy; screenResolution=1920x1080 
Connection: keep-alive 
+1

你想如何分割鍵和值?在第一個結腸? – Bucket

+0

第一個空格。即(「主機:」,「本地主機:1337」) – chuckfinley

+0

您可能不需要,因此也不應該寫下C中的任何內容。使用更高級別的語言編寫原型 - 我推薦使用Python或Ruby - 以及然後對其進行概況分析,*僅在必要時,*在C中編寫加速器模塊以進行最昂貴的操作。這將會更容易,結果將會有更少的錯誤,並且您將能夠詢問關於如何執行C中昂貴部分的更具體的問題。 – zwol

回答

3

「簡單」取決於您想要代碼的健壯性和安全性。

您可以在循環中使用strchr()來反覆查找空格和換行符以及memcpy()以將字符串的這些部分複製到所需的結構中。

或者您可以使用strtok()來在原地屠宰字符串,同時收集指向它的指針。

或者你可以得到更詳細的。這裏有一個鏈接到Apache HTTPd中的代碼來完成這個任務:http://svn.apache.org/repos/asf/httpd/httpd/trunk/server/apreq_parser_header.c