需求、例如:

1、" key1 = value1 " 通过"key1"从该字符串中查找出"value",value去除前后空格

2、" key1 == value1 " 、" key1 = = value1 " 双等于号不合法

头文件:

  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>

函数原型:

  1. void trim(char *strIn /*in*/, char *strOut /*out*/);
  2.  
  3. void getValue(char * keyAndValue /*in*/, char * key /*in*/, char * value /*out*/);

实现方法:

  1. void trim(char *strIn, char *strOut){
  2.  
  3. char *start, *end, *temp;//定义去除空格后字符串的头尾指针和遍历指针
  4.  
  5. temp = strIn;
  6.  
  7. while (*temp == ' '){
  8. ++temp;
  9. }
  10.  
  11. start = temp; //求得头指针
  12.  
  13. temp = strIn + strlen(strIn) - ; //得到原字符串最后一个字符的指针(不是'\0')
  14.  
  15. while (*temp == ' '){
  16. --temp;
  17. }
  18.  
  19. end = temp; //求得尾指针
  20.  
  21. for(strIn = start; strIn <= end; ){
  22. *strOut++ = *strIn++;
  23. }
  24.  
  25. *strOut = '\0';
  26. }
  1. void getValue(char * keyAndValue, char * key, char * value){
  2.  
  3. char *p = keyAndValue;
  4.  
  5. p = strstr(keyAndValue, key);
  6. if(p == NULL){
  7. printf("没有key\n");
  8. return ;
  9. }
  10.  
  11. p += strlen(key);
  12. trim(p, value);
  13.  
  14. p = strstr(value, "=");
  15. if(p == NULL){
  16. printf("没有=\n");
  17. return;
  18. }
  19. p+= strlen("=");
  20. trim(p, value);
  21.  
  22. p = strstr(value, "=");
  23. if(p != NULL){
  24. printf("多余的=\n");
  25. return;
  26. }
  27. p = value;
  28. trim(p, value);
  29.  
  30. }

测试:

  1. void main(){
  2.  
  3. char *keyAndValue = " key1 = kkkki";
  4.  
  5. char *key = "key1";
  6.  
  7. char value[] = {};
  8.  
  9. getValue(keyAndValue, key, value);
  10.  
  11. printf("value = *%s*\n", value);
  12. system("pause");
  13. }

c语言实现名值对通过key查找value的更多相关文章

  1. 将查询字符串解析转换为泛型List的名值集合.

    ///<summary> ///将查询字符串解析转换为泛型List的名值集合. ///</summary> ///<param name="queryStrin ...

  2. iOS 将对象的属性和属性值拆分成key、value,通过字符串key来获取该属性的值

    这篇博客光看标题或许就会产生疑问,某个对象,只要它存在某个属性,且值不是空的,不就能直接用点方法获取吗,为什么要拆分成key和value多此一举呢?下面,我用一个例子告诉大家,既然这方法是存在的,那就 ...

  3. JSON创建键值对(key是中文或者数字)方式详解

    JSON创建键值对(key是中文或者数字)方式详解 先准备好一个空的json对象 var obj = {}; 1. 最原始的方法 obj.name = 'zhangsan'; //这种方式很简单的添加 ...

  4. jquery获取含有某元素的的控件 “控件名[属性名=值]”

    jquery获取含有某元素的的控件 “控件名[属性名=值]”. 如,获取 <input id="${cheackbox}" data-role="icheck&qu ...

  5. Vscode 调试 C 语言时数组值无法显示的问题

    使用 Vscode 的 Gdb 扩展调试 C 语言时,发现数组变量在 变量列表里面中显示为指针,且只显示为其第一个元素的值,无法看到所有元素的值. 如图所示: 解决: 假设有一个元素个数为10的数组v ...

  6. 1993: C语言实验——最值

    1993: C语言实验——最值 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1541  Solved: 727[Submit][Status][Web ...

  7. R语言计算IV值

    更多大数据分析.建模等内容请关注公众号<bigdatamodeling> 在对变量分箱后,需要计算变量的重要性,IV是评估变量区分度或重要性的统计量之一,R语言计算IV值的代码如下: Ca ...

  8. Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...

  9. Docs-.NET-C#-指南-语言参考-关键字-值类型:struct

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...

随机推荐

  1. java订单生成工具类

    欢迎来到付宗乐个人博客网站.本个人博客网站提供最新的站长新闻,各种互联网资讯. 还提供个人博客模板,最新最全的java教程,java面试题.在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿 ...

  2. MyISAM和InnoDB在索引上的差别及其它区别

    首先我们知道MyISM和InnoDB索引都是由B+树实现的,但在索引管理数据方式上却有所不同. InnoDB是聚集索引,数据文件是和(主键)索引绑在一起的,即索引 + 数据 = 整个表数据文件,通过主 ...

  3. MQ服务器端和客户端通信浅谈

    MQ服务器端和客户端通信浅谈 1. WebSphere MQ的服务端的安装和配置 (1)创建名为venus.queue.manager的默认队列管理器. 在DOS窗口命令提示符下,输入以下命令: cr ...

  4. 用python实现银行家算法

    编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性. 进程 已占资源 最大需求数 资源种类 A B C D A B C D P0 0 0 1 2 0 0 1 2 P1 1 0 0 0 ...

  5. 如何以python风格高逼格的改成购物车逻辑

    之前有一篇博文写到关于购物车的业务逻辑,分别运用cookie和redis存储未登录和登录用户的购物车数据,虽然已经很好的完成了业务逻辑,但是会发现代码的冗余很严重,也不够具有python特色,今天就让 ...

  6. temperatureConversion2

    Solution: #方法一:字符串与列表的相互转换和它们的基本函数操作 n = input() if n[0] in {"C","c"}: a= list(n ...

  7. Throughput Controller

    吞吐量控制器(Throughput Controller)介绍 作用:控制其子节点的执行次数与负载比例分配 Total Executions: 整个测试计划中的总执行次数 Percent Execut ...

  8. 完美解决迅雷极速版强制升级到迅雷X

    虽然迅雷已死,但是还是软件还是有点点用的.废话不好多说,直接上解决办法: 1. 找到桌面的迅雷图标,右键选择打开文件位置; 2. 根据路径找到: 相对路径:Thunder Network\Thunde ...

  9. 如何:从 bool? 安全地强制转换为 bool(C# 编程指南)

    bool? 可以为 null 的类型可以包含三个不同的值:true.false 和 null.因此,bool? 类型不能用于条件语句,如 if.for 或 while.例如,此代码无法编译,并将报告编 ...

  10. unity_实用小技巧(避免游戏对象被销毁时声音消失)

    在游戏中我们使用碰撞检测,当两个物体发生碰撞时产生声音音效,代码如下: 如果使用上述代码,我们会发现,在脚本中使用AudioSource声明该声音,当该物体被销毁时声音也会立刻停止. 但是我们希望声音 ...