标签:
题目:
键值对("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
标签:
原文地址:http://www.cnblogs.com/gossiplee/p/4488803.html