c指针应用:键值对"key=value"字符串,在开发中经常使用
2017-01-30 21:37
387 查看
/*要求写一个函数实现如下功能
要求1:自己定义一个接口,实现根据key获取value
要求2:编写测试用例
要求3:键值对中间可能有多个空格,请清除空格
键值对可能如下
“key1= buf1 “;
“key2= buf2 “;
“key3= buf3 “;
“key4= buf4 “;
“key5= buf5 “;
*/
要求1:自己定义一个接口,实现根据key获取value
要求2:编写测试用例
要求3:键值对中间可能有多个空格,请清除空格
键值对可能如下
“key1= buf1 “;
“key2= buf2 “;
“key3= buf3 “;
“key4= buf4 “;
“key5= buf5 “;
*/
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> int trimspace(char *str, char *newstr)//除去buff前后空格 { char *phead = str; int i = 0; int j = strlen(phead) - 1; if (phead == NULL || newstr == NULL) { return -1; } while (isspace(phead[i])&& phead[i] != '\0') { i++; } while (isspace(phead[j]) && phead[j] != '\0') { j--; } int count = j - i + 1; strncpy(newstr, phead + i, count); newstr[count] = '\0'; return 1; } int getbuff(char *keybuff, char *key, char *buf) { char *p = keybuff;//指针初始化 //判断是否存在key p = strstr(p, key); if (p == NULL) { printf("There is no %s", key); return -1; } //判断等号是否存在 p = strstr(p, "="); if (p == NULL) { printf("There is no buff for %s", key); return -1; } //除去key对应字符子串的前后空格 p = keybuff+ strlen(key) + strlen("="); int ret=trimspace(p, buf); if (ret != 1) { printf("delete sapace fail"); return -1; } return 1; } void main() { char *str[] = { "key1= buf1 " ,"key2= buf2 ", "key3= buf3 ", "key4= buf4 " ,"key5= buf5 " }; // char *keybuf = "key2= buf2 "; // char *key = "key2"; char key[5]; char buf[50] = { 0 }; int ret,i; printf("Please input key(key1~key5:"); scanf("%s", key); // for (i = 0; i < 5; i++) switch (key[3]) { case '1':i = 0; break; case '2':i = 1; break; case '3':i = 2; break; case '4':i = 3; break; case '5':i = 4; break; } //ret = getbuff(keybuf, key, buf); ret = getbuff(str[i], key, buf); if (ret != 1) { printf("funtion getbuff err\n"); } else { printf("%s:%s\n", key, buf); } }
相关文章推荐
- 给定["a","b","a","b","c","a","b","c","b"]字符串数组,然后使用Map的key来保存数组的字符串元素,value保存该字符串元素出现的次数。
- Unix/Linux C++应用开发-C++基础概念"数组、指针和字符串"
- Android应用开发经常使用知识
- C开发注意事项_字符串及指针使用
- Android开发,建立具有键值对(key-value)关系的spinner
- 连续多次进入使用了MJRefresh的页面应用会崩 An instance 0xdb48a00 of class UITableView was deallocated while key value
- c总结6 --- 在字符串键值对中提取Value(指针学习5)
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
- 键值对Dictionary、KeyValuePair、Hashtable 简单使用。
- Windows桌面应用开发-字符串的使用
- NSString 开发过程中经常使用到的字符串效验
- 在运行程序时报错:"如果在 Code First 模式下使用,则使用 T4 模板为 Database First 和 Model First 开发生成的代码可能无法 正常运行。若要继续使用 Database First 或 Model First,请确保在执行应用程序的 config 文件中指 定 Entity Framework 连接字符串。若要将这些从 Database First 或 Mod
- 使用指针删除字符串"#"
- 我们在 web 应用开发过程中经常遇到输出某种编码的字 符, 如 iso8859-1 等, 如何输出一个某种编码的字符串?
- iOS开发7-KVO(Key-Value Observer)键值观察
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- Android项目中如果json字符串中key-value顺序很重要,不要使用Android自带的JSONObject