Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从字符串中检索键和值的最佳方式是什么_C - Fatal编程技术网

C 从字符串中检索键和值的最佳方式是什么

C 从字符串中检索键和值的最佳方式是什么,c,C,从字符串中检索键和值的最佳方法是什么 我有char*stringRow=“ThisKey1=ThisValue1&ThisKey2=ThisValue2” 我有上面的字符串,需要从中提取char*键和char*值 它将进入循环,直到我们从字符串中提取所有键值对 键和值对由和字符分割。字符串中可以有n个键和值。此外,键和值的长度也不同 如何使用简单的C实现这一点?任何例子都会有所帮助 ***更新: 我认为使用sscanf解析更好。 有人能告诉我如何使用sscanf格式化来解析这个字符串吗。首先使用

从字符串中检索键和值的最佳方法是什么
我有
char*stringRow=“ThisKey1=ThisValue1&ThisKey2=ThisValue2”

我有上面的字符串,需要从中提取
char*键
char*值

它将进入循环,直到我们从字符串中提取所有键值对

键和值对由
字符分割。字符串中可以有n个键和值。此外,键和值的长度也不同

如何使用简单的
C
实现这一点?任何例子都会有所帮助

***更新:
我认为使用
sscanf
解析更好。
有人能告诉我如何使用
sscanf
格式化来解析这个字符串吗。

首先使用Noufals注释

否则,我假设一个带有“=&”作为delimter集的strtok应该可以工作。然后迭代数组并构建值对


请注意,这不会处理键或值中包含的分隔符。您需要对这些进行转义或转码。

首先使用Noufals注释

否则,我假设一个带有“=&”作为delimter集的strtok应该可以工作。然后迭代数组并构建值对


请注意,这不会处理键或值中包含的分隔符。您需要对其进行转义或转码。

您可以使用轻松拆分字符串并构建简单的类似状态机的逻辑来获取键值对(具有两种状态:“读取键”、“读取值”)

您可以使用轻松拆分字符串并构建简单的类似状态机的逻辑来获取键值对(具有两种状态:“读取关键字”、“读取值”

这是一个URL查询字符串吗?如果需要的话,你应该考虑使用一些标准解析器。对于什么样的执行速度、内存消耗、容易维护等等最优化?我认为没有任何“最佳”。“除了扫描字符串查找分隔符之外,还有其他方法。也许您可以自己编写代码?是否存在没有值的键(
key1=&key2=val2
key1&key2=val2
)?是否存在没有键的值(
key1=val1&=val2
key1=val1&val2
)?请查找有问题的***更新。这是URL查询字符串吗?如果需要的话,你应该考虑使用一些标准的解析器。对于什么是执行速度、内存消耗、容易维护等等,大多数都是优化的。除了扫描字符串来寻找分隔符之外,我不认为有任何“最佳”的方式来完成它。也许您可以自己编写代码?是否存在没有值的键(
key1=&key2=val2
key1&key2=val2
)?是否存在不带键的值(
key1=val1&=val2
key1=val1&val2
)?请查找有问题的***更新。您可以建议我使用lite HTTP URL解析器吗可以建议我使用lite HTTP URL解析器吗