码迷,mamicode.com
首页 > 其他好文 > 详细

字符串--getValuebyKey()综合练习

时间:2015-05-08 21:40:30      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

题目:

键值对("key = valude")字符串,在开发中经常使用;
要求1:请自己定义一个接口,实现根据key获取valude;40分
要求2:编写测试用例。30分
要求3:键值对中间可能有n多空格,请去除空格30分
注意:键值对字符串格式可能如下:

"key1 = valude1"
"key2 =       valude2         
"key3  = valude3"
"key4        = valude4"
"key5   =   "
"key6   ="
"key7   =   "

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <ctype.h> 
 5 
 6 int TrimSpaceStr(char *p, char *buf);
 7 int getKeybyValue( char *pKeyValue, char *pKey, char *pValue);
 8 
 9 int main()
10 {
11     int ret = 0;
12     char KeyValude[] = "key1  =   valude1";
13     char Key[] = "key1";
14     char Valude[1024] =  {0};
15 
16     ret = getKeybyValue(KeyValude, Key, Valude);
17 
18     if (ret != 0)
19     {
20         printf("func getKeybyValue() err:%d \n", ret);
21         return ret;
22     }
23     printf("Valude:%s \n", Valude);
24 
25     system("pause");
26     return 0;
27 
28 }
29 
30 // 字符串两头堵模型,主函数分配内存(in),去掉字符串前后的多余的空格
31 int TrimSpaceStr(char *p, char *buf)
32 {
33     int  rv   = 0;
34     char *str = p;
35     int  i    = 0;              // 搜索指针变量,从字符串头部开始
36     int  j    = strlen(str) - 1;// 搜索指针变量,从字符串尾部开始
37     int  len  = 0;              // 字符串的有效长度
38     
39     if(str==NULL || buf==NULL)
40     {
41         rv = -1;
42         printf("Function TrimSpaceStr() check (str==NULL || buf==NULL) Error: %d", rv);
43         return rv;
44     }
45     
46     while(isspace(str[i]) && i<j)
47     {
48         i++;
49     }
50     
51     while(isspace(str[j]) && j>=0)
52     {
53         j--;
54     }
55     
56     len = j-i+1;
57     
58     strncpy(buf, str+i, len);
59     
60     buf[len] = \0;
61     return rv;
62 }
63 
64 int getKeybyValue(  char *pKeyValue, char *pKey, char *pValue)
65 {
66     //1. 判断是否有参数中传入的KEY值
67     char *temp = pKeyValue;
68     int rv = 0;
69     
70     temp = strstr(pKeyValue, pKey);
71     if(temp==NULL)
72     {
73         rv = -1;
74         printf("func getKeybyValue() err:%d 查找没有关键字pKey  \n", rv);
75         return rv;
76     }
77     temp = temp + strlen(pKey); // 辅助指针此时指向key的y字母后面一位,为下一次检索做准备
78     
79     //2. 接着寻找=的位置
80     temp = strstr(temp, "=");   // 从当前temp位置开始寻找=
81     if (temp == NULL)
82     {
83         rv = -2;
84         printf("func getKeybyValue() err:%d 查找没有=  \n", rv);
85         return rv;
86     }
87     temp = temp + 1;            // 辅助指针此时指向=后面一位,为下一次检索做准备
88     
89     //3. 提取VALUE
90     rv = TrimSpaceStr(temp, pValue);
91     if (rv != 0)
92     {
93         printf("func trimSpaceStr03() err:%d \n", rv);
94         return rv;
95     }
96     return rv;
97 }

 

总结:

1.XXXXXXXXXXXXXXXXXX

2.XXXXXXXXXXXXXXXXXX

3.XXXXXXXXXXXXXXXXXX

字符串--getValuebyKey()综合练习

标签:

原文地址:http://www.cnblogs.com/gossiplee/p/4488803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!