c总结6 --- 在字符串键值对中提取Value(指针学习5)
来源:互联网 发布:南充行知小学 编辑:程序博客网 时间:2024/06/06 02:21
我们在开发的时候,还有可能会在一段含有键值对中的字符串中进行查找键对应得值,比如:姓名=张三 等等。这样我们就需要借助今天的总结进行操作。
我们需要判断要查找的键是否存在,只有存在的情况下,后面的操作才有意义。
找到键后要 = 字符
然后就可以获取到,我们需要的键值了
备注:考虑到要操作的字符串的含有空白字符的情况,所以我们需要借助上篇总结。
直接上代码:
/************************************************************************//* 函数名称:myStrTrim/* 函数功能: 将前后 含有空白字符的字符串 提出出来/* 参数1:前后含有空白字符的字符串/* 参数2:去除空白字符的字符串/* 返回值: 非0代表失败/* 说明:#include <ctype.h>int isspace( int ch ); 如果参数是空格类字符(即:单空格,制表符,垂直制表符,满页符,回车符,新行符),函数返回非零值,否则返回零值。/************************************************************************/int myStrTrim1(char * p, char * buf){int ret = 0;int ncount = 0;//定义两个下标 一个从0开始 一个从后面开始int i, j;if (p == NULL || buf == NULL){ret = -1;return ret;}//第一个下标i = 0;//最后一个下标, 是 \0前面的字符的下标j = strlen(p) - 1;//如果是空白字符 并且 不为'\0' 开始下标自增while (isspace(p[i]) && p[i] != '\0'){i++;}//如果是空白字符 并且j不是0 末尾下标自减while (isspace(p[j]) && j>0){j--;}//用后面的下标 减去 前面的下标 获取到中间的字符数量 //因为多减一个 所以再加一//这就获取到了 有效字符串 不含有\0 的字符个数 ncount = j - i + 1;//从 p+i的位置 拷贝 ncount个字符到 buf中去strncpy_s(buf, ncount+1, p + i, ncount);//最后一个字符添加上 \0buf[ncount] = '\0';return ret;}/************************************************************************//* 函数名称:getKeyByValue/* 函数功能:在键值对的字符串中 查找键 所对应的值/* 参数1:要查找的字符串/* 参数2:要查找的键/* 参数3: 键所对应的值/* 返回值: 0表示成功 非0表示失败/************************************************************************/int getKeyByValue(char *pKeyValue, char *pKey, char *pValue){char rv = 0;char * p = NULL;if (pKeyValue == NULL || pKey == NULL || pValue ==NULL){rv = -1;printf("func getKeyByValue err:%d \n", rv);return rv;}//在pKeyValue中查是否存在 关键字 pKeyp = strstr(pKeyValue, pKey);//如果找到则p指向pKey所在的位置if (p == NULL){//不存在 pKeyrv = -1;printf("func getKeyByValue err:%d \n", rv);return rv;}//为下一次检索 = 做准备p = p + strlen(pKey); //有没有=p = strstr(p, "=");if (p==NULL){//不存在 =rv = -2;printf("func getKeyByValue err:%d \n", rv);return rv;}//为下一下检索 pValue 做准备p = p + 1;//提取pKey对用的pValue值rv = myStrTrim1(p, pValue);if (rv != 0){printf("func myStrTrim err:%d \n", rv);return rv;}return 0;}int _tmain(int argc, _TCHAR* argv[]){char KeyValue[] = "key61=value1";char Key[] = "key1";char Value[1024] = { 0 };int ret = getKeyByValue(KeyValue, Key, Value);if (ret != 0){printf("func:getKeyByValue() err:%d \n", ret); }else{printf("Value:%s \n", Value);}// char p[] = " adc ";// char buf[120] = { 0 };// int a = myStrTrim( p,buf);// printf("%d %s \n", a, buf);system("pause");return 0;}
0 0
- c总结6 --- 在字符串键值对中提取Value(指针学习5)
- c总结7 --- 在字符串键值对中提取Value(指针学习6)
- c指针应用:键值对"key=value"字符串,在开发中经常使用
- C语言提取(key,value)键值对
- C/C++学习之C提高-----非空格的字符串长度、去掉字符串前后空格、字符串反转、键值对字符串、const练习、二级指针做输入/输出的特性、将字符串按逗号分开,并放入二维数组打印出来
- JS遍历Json字符串中键值对
- 去掉Json中value为空的键值对
- swift-08-使用键值对儿统计字符在字符串中出现的次数
- 在字符串中提取数字
- C#WinForm开发之在ComboBox、ListBox中加载键值对
- C中对字符串和指针的理解
- c语言习题(2)--键值对,字符串反转
- 在一个字符串中提取子字符串
- JAVA 中 提取 JSON 字符串中的 KEY 和 VALUE 值
- c总结4 --- 字符串逆序(指针学习3)
- 键值对案例:获取字符串中字符出现的次数
- JAVA问题总结之24--HashMap键值对(key-value)的操作
- 2016华为上机题:提取键值对
- 【面试】2016校园招聘面试--京东
- MySQL++学习日记(二)
- pentaho 示例Cube配置详解(SQL Server版本)
- 关于spring的使用事物与不使用事物的区别
- android 系统内置应用升级
- c总结6 --- 在字符串键值对中提取Value(指针学习5)
- 第一次参加MDCC,嗟乎,远矣!
- opengl 程序基本结构
- 《Crazy Food》项目总结
- OpenGL3.3教程-----First Triangle
- zend studio 12.5.1破解
- 1004. 成绩排名 (20)
- xcode错误:"The application could not be verified."
- php调用另一php页面