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

coa*_*nor 1 c parsing

我有一些输入参数,如:

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

这些参数与字符' & ' 相关联,参数及其值与' = ' 相关联.我想将它们解析成一个像这样的键值映射:

[param1, param1Value], [param2, param2Value], [param3, param3Value],...
Run Code Online (Sandbox Code Playgroud)

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

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

我原本打算使用yacc/lex,但要复杂到这么小的功能.sscanf也可以解析类似regexp的文本,但是为我的参数列表构建类似regexp的字符串似乎并不那么容易.

有没有简单但可靠的方法来解析它们没有关键字符?

Som*_*ude 6

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

分裂处'='可以也可以strtok(或者更确切地说strtok_r)或使用strchrstrncpy/strcpystrndup/来完成strdup.