c - 在 C 中解析参数的简单但可靠的方法是什么?

标签 c parsing

我有一些输入参数,例如:

param1=param1Value&param2=param2Value&param3=param3Value...

这些参数与字符“&”相关联,参数及其值与“=”相关联。我想将它们解析成这样的键值映射:

[param1, param1Value], [param2, param2Value], [param3, param3Value],...

但是因为参数的值包含两个关键字符,这会破坏参数解析过程。

我被告知参数传递者,他们创建了这些参数格式以便于自定义,例如使用 sprintf 更改不同应用程序的参数值。因此很难说服他们将这些参数分隔在映射数组中。

我原本打算使用 yacc/lex,但对于这样一个小功能来说太复杂了。 sscanf也可以解析类似正则表达式的文本,但为我的参数列表构建类似正则表达式的字符串似乎并不那么容易。

有没有简单但可靠的方法在没有关键字符的情况下解析它们?

最佳答案

您可以使用 strtok'&' 字符处标记字符串,然后在 '=' 处拆分“标记”以获取参数名称和值。

'=' 处的拆分也可以使用 strtok(或者更确切地说是 strtok_r)或使用 strchr 完成和 strncpy/strcpystrndup/strdup .

关于c - 在 C 中解析参数的简单但可靠的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136623/

相关文章:

c - 嵌入式设备(Linux 内核)上的微秒(或一毫秒)时间分辨率

c - 解析具有多个公共(public)分隔符的文件 C

java - 读取java中的特殊字符

c - 在 DevExpress vb.net 中使用 CheckBoxList 分配和评估?

在 Notepad++ 中配置 NppExec 以进行 C 编程

c - gtk_entry_set_input_ Purpose 无法识别

objective-c - obj-c 的 Ruby 解析器

c++ - 在结构指针中修改 C 字符串

python - 如何在pyparsing中省略重复项?

java解析日期时间(以毫秒为单位)得到解析错误