字符串的规范使用(二)

键值对(”key = valude”)字符串,在开发中经常使用;

要求1:请自己定义一个接口,实现根据key获取valude;40分

要求2:编写测试用例。30分

              要求3:键值对中间可能有n多空格,请去除空格30分

注意:键值对字符串格式可能如下:

 “key1 = valude1”

“key2 =       valude2         

“key3  = valude3”

“key4        = valude4”

“key5   =   “

“key6   =“

“key7   =   “

int getKeyByValude(char *keyvaluebuf,  char *keybuf,  char *valuebuf);

/***
keyandvalue.c
***/
#include<stdio.h>
#include<string.h>

int trimSpace(char *in,char *out)
{
    int iRet = -1;
    int i = 0;
    int j = 0;
    int k = 0;
    char *tempIn = in;

    if(in == NULL || out == NULL)
    {
        printf("NULL is error
");
        return iRet;
    }

    i = 0;
    j = strlen(tempIn) - 1;

    while(isspace(tempIn[i]) && tempIn[i] != '')
    {
        i++;
    }
    while(isspace(tempIn[j]) && tempIn[j] != '')
    {
        j--;
    }

    while(i <= j)
    {
        out[k++] = tempIn[i++];
    }

    out[k] = '';
    iRet = 0;
    return iRet;
}

int getValuebyKey(const char *keyandvalue, const char *key, char *value)
{
    int iRet = -1;
    char *str = keyandvalue;

    if(keyandvalue == NULL || key == NULL || value == NULL)
    {
        printf("Point is NULL 
");
        return iRet;
    }

    str = strstr(keyandvalue,key);
    if(str == NULL)
    {
        printf("strstr err 
");
        return iRet;
    }

    str = str + strlen(key);
    
    str = strstr(str,"=");
    if(NULL == str)
    {
        printf("strstr(str,"=") error
");
        return iRet;
    }

    str = str + strlen("=");

    iRet = trimSpace(str,value);
    if(iRet != 0)
    {
        printf("trimSpace error
");
        return iRet;
    }
    
    return iRet;
}

int main()
{
    int iRet = 0;
    char *key = "key";
    char *keyvalue = "key =   value   ";
    char value[256];
    int len = 0;

    iRet = getValuebyKey(keyvalue,key,value);
    printf("value = %s
",value);
    return 0;

}
原文地址:https://www.cnblogs.com/wanghao-boke/p/11604862.html