键值对(”key = valude”)字符串,在开发中经常使用;
要求1:请自己定义一个接口,实现根据key获取valude;40分
要求2:编写测试用例。30分
要求3:键值对中间可能有n多空格,请去除空格30分
注意:键值对字符串格式可能如下:
“key1=valude1”
“key2 = valude2 ”
“key3 = valude3”
“key4 = valude4”
“key5 = “
“key6 =“
“key7 = “
int trimSpace(const char *inBuf, char *outBuf)
{
int i = 0,j =0;
int nCount;
if (!inBuf || !outBuf)
{
return -1;
}
j = strlen(inBuf) - 1;
while (isspace(inBuf[i]) && inBuf[i] != '\0')
{
i++;
}
while (isspace(inBuf[j]) && j > 0)
{
j--;
}
nCount = j - i + 1;
strncpy(outBuf, inBuf + i, nCount);
return 0;
}
int getKeyByValue(const char *keyvaluebuf, const char *keybuf, char *valuebuf)
{
char *p = NULL;
char strResult[100] = {0};
if (keyvaluebuf == NULL || keybuf == NULL || valuebuf == NULL)
{
return -1;
}
p = strstr(keyvaluebuf, keybuf);
if (p == NULL)
{
return -1;
}
p = strstr(p, "=");
p++;
trimSpace(p, strResult);
memcpy(valuebuf, strResult,strlen(strResult));
}
int main()
{
char *keyvaluebuf = "dsadc = ewqds";
char valuebuf[100] = {0};
getKeyByValue(keyvaluebuf, "dsadc", valuebuf);
printf("%s", valuebuf);
return 0;
}
这样写有个bug就是当可以为dsadcdsadc的时候和key为dsadc的时候结果是一样的,先这样,后续改进