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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被不同号码骚扰电话打个不停怎么办 手机注册被骚扰电话打个不停怎么办 网贷不停的打骚扰电话怎么办 发改委的可研报告过期了怎么办 买到没有预售证的房子怎么办 网上买的学生票取不出来怎么办 买完学生票发现打折没次数了怎么办 动车晚点方向来反了怎么办 身份证购买高铁票过不了审核怎么办 手机购买高铁票身份核验失败怎么办 在高铁上如果有人占了座位该怎么办 网上买的高铁票改签怎么办 临沂村委会强行征收我的土地怎么办 学籍验证码连续输入三次错误怎么办 社保在上海个税在外地居转户怎么办 父母已经有英国签证孩子的怎么办 营运车辆被撞不肯赔务工费怎么办 欧米茄外壳上装表带的孔穿了怎么办 淘宝上买了电子产品坏了怎么办 研究生人才补助申请期限过了怎么办 一个小孩亲妈愿意养躲起来怎么办 网银转账名字打错了怎么办 百世快递邮东西到长春件丢失怎么办 三色吸顶灯有一色不亮了怎么办 超级试驾车超出取车行政区域怎么办 护士电子化注册激活码搞丢了怎么办 香港地铁地铁错买了特惠票怎么办 湖北软考证书领取没有准考证怎么办 哈罗单车电动车骑着没电了怎么办 招聘线上测评的通行证过期了怎么办 上海落户在国企辞职后户口怎么办 老党员干部档案丢失人以去世怎么办 档案中的年龄有涂改办理退休怎么办 到办理退休不知档案在那怎么办 职工办理退休时档案丢了怎么办 老婆嫌我穷把我和孩子抛弃了怎么办 我招工表比我实际年龄小一岁怎么办 考上好学校名额被顶替了怎么办 面试题领导越级安排工作你怎么办 一个23岁的大学生身体肥胖怎么办 雷达手表把调时间的把出来了怎么办