C:将字符串解析为键值对

标签 c parsing

<分区>

有没有一种简单的方法可以将字符串解析为 k,v 对?

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

最佳答案

“简单”取决于您希望代码的健壮性和安全性。

您可以在循环中使用 strchr() 来重复查找空格和换行符,并使用 memcpy() 将字符串的那些部分复制到结构中你想要它们。

或者您可以使用 strtok() 就地处理字符串,同时收集指向它的指针。

或者你可以更详细一点。以下是 Apache HTTPd 中用于执行此任务的代码的链接:http://svn.apache.org/repos/asf/httpd/httpd/trunk/server/apreq_parser_header.c

关于C:将字符串解析为键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201889/

相关文章:

java - 除文件路径外,按空格分割字符串

android - 在 Android 中发送和解析 JSON 对象

java - 如何使用 SAX Java 解析器读取评论文本

c - C 内存泄漏的现实危险?

c - 在 fread(3) 中检查读取的项目数是否小于请求的数量,而不是 0,是否正确?

c++ - X3,如何填充更复杂的AST?

javascript - 基于 Web 的应用程序 - HTML 解析

c - 为什么段错误和程序以退出代码 139 结束?

c - 结构内的灵活数组成员 (c99)

c - 嵌入式系统上的外部文件资源(C语言加FAT)