字符串的规范使用(二)

键值对(”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\n");
        return iRet;
    }

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

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

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

    out[k] = '\0';
    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 \n");
        return iRet;
    }

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

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

    str = str + strlen("=");

    iRet = trimSpace(str,value);
    if(iRet != 0)
    {
        printf("trimSpace error\n");
        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\n",value);
    return 0;

}
复制代码

 

posted @   王清河  阅读(319)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示