键值对

键值对(“key = valude”)字符串,在开发中经常使用;
要求1:请自定义一个接口,实现根据key获取valude;
要求2:编写测试用例;
要求3:键值对中间可能有n个空格,请去除空格。
注意:键值对字符串格式可能如下:
"key1 = valude1 "
"key2  =       valude2  "
"key3     =    valude3 "
"key4    =    valude4     "
"key5 = valude5          "

//1. 查找key是不是在母串中

//2. 看有没有 = 号

//3. 在等号后面  去除空格

指针做函数参数,并返回函数值

/*
键值对(“key = valude”)字符串,在开发中经常使用;
要求1:请自定义一个接口,实现根据key获取valude;
要求2:编写测试用例;
要求3:键值对中间可能有n个空格,请去除空格。
  注意:键值对字符串格式可能如下:
       "key1 = valude1 "
         "key2 =     valude2    "
           "key3     = valude3 "
             "key4    =      valude4 "
               "key5     =     valude5     "
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int trimSpace9(char *str, char *newstr)
{
    char *p = str;
    int ncount = 0;
    int i, j = 0;
    if(str == NULL ||newstr == NULL)
    {
        printf("func trimSpace() err ");
        return -1;
    }
    i = 0;
    j = strlen(p)-1;
    while(isspace(p[i]) && p[i] != '\0')
    {
        i++;
    }
    while(isspace(p[j]) && p[j] != '\0')
    {
        j--;
    }
    ncount = j - i + 1;
    strncpy(newstr, str+i, ncount);
    newstr[ncount] = '\0';
    return 0;
}

int getKeyByValude(char *keyvaluebuf, char *keybuf, char *valuebuf)
{
    int ret = 0;
    char *p = NULL;
    if(keyvaluebuf == NULL || keybuf == NULL || valuebuf == NULL)
    {
        printf("func getKeyByValude() err");
        return -1;
    }
    //1. 查找key是不是在母串中
     p = keyvaluebuf;
     p = strstr(p, keybuf);
     if(p == NULL)
     {
         return -1;
     }

     //让辅助指针变量 重新初始化
     p = p + strlen(keybuf);
     
    //2. 看有没有 = 号
     p = strstr(p, "=");
     if(p == NULL)
     {
         return -1;
     }

     //让辅助指针变量 重新初始化
     p = p + strlen("=");

     
    //3. 在等号后面  去除空格
    ret= trimSpace9(p, valuebuf);
    if(ret != 0)
    {
        printf("func trimSpace() err %d", ret);
        return ret;
    }
    return ret;
}
int main(void)
{
    int ret = 0;
    char buf[1024] = {0};
    int buflen = 0;
    char *keyAndvalue = "key5     =     valude5     ";
    char *key = "key5";

    ret = getKeyByValude(keyAndvalue, key, buf);
    if(ret != 0)
    {
        printf("func getKeyByValude() err %d", ret);
        return ret;
    }
    printf("buf: %s", buf);

    return ret;
}

 

posted @ 2017-04-30 20:06  Liu_Jing  Views(848)  Comments(0)    收藏  举报