我有一些输入参数,例如:
param1=param1Value¶m2=param2Value¶m3=param3Value...
这些参数与字符“&”相关联,参数及其值与“=”相关联。我想将它们解析成这样的键值映射:
[param1, param1Value], [param2, param2Value], [param3, param3Value],...
但是因为参数的值包含两个关键字符,这会破坏参数解析过程。
我被告知参数传递者,他们创建了这些参数格式以便于自定义,例如使用 sprintf 更改不同应用程序的参数值。因此很难说服他们将这些参数分隔在映射数组中。
我原本打算使用 yacc/lex,但对于这样一个小功能来说太复杂了。 sscanf也可以解析类似正则表达式的文本,但为我的参数列表构建类似正则表达式的字符串似乎并不那么容易。
有没有简单但可靠的方法在没有关键字符的情况下解析它们?
最佳答案
您可以使用 strtok
在 '&'
字符处标记字符串,然后在 '='
处拆分“标记”以获取参数名称和值。
'='
处的拆分也可以使用 strtok
(或者更确切地说是 strtok_r
)或使用 strchr
完成和 strncpy
/strcpy
或 strndup
/strdup
.
关于c - 在 C 中解析参数的简单但可靠的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136623/