C字符串查找

1.有一个字符串”1a2b3d4z”,;
要求写一个函数实现如下功能,
功能1:把偶数位字符挑选出来,组成一个字符串1。valude;20分
功能2:把奇数位字符挑选出来,组成一个字符串2,valude 20
功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
功能4:主函数能测试通过。
int getStr1Str2(char *souce, char *buf1, char *buf2);

int getStr1Str2(char *souce, char *buf1, char *buf2)
{
    int ret = 0;
    char *src = souce;
    if(souce == NULL || buf1 == NULL || buf2 ==NULL){
        ret = -1;
        printf("%s is error!(source == NULL || buf1 == NULL || buf2 ==NULL)\n",__FUNCTION__);
        return ret;
    }

    while(*src != '\0'){

        *buf1 = *src;
        src++;
        buf1++;

        *buf2 = *src;
        src++;
        buf2++;
    }


    return ret;
}
int main(void)
{

    char src[1024]="1a2b3c4d";
    char buf1[512]={0};
    char buf2[512]={0};

    int ret = 0;
    ret = getStr1Str2(src,buf1,buf2);
    if(ret != 0){
        printf("getStr1Str2 failed!ret : %d\n",ret);
        return ret;
    }
    printf("src:%s\n",src);
    printf("偶数位的数据buf2:%s\n",buf2);
    printf("奇数位的数据buf1:%s\n",buf1);
    printf("\nHello World!\n");
    return 0;
}

键值对(”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);

int trimeSpace(char *src,char *new_str)
{
    int ret = 0;

    char *tmp_p = src;

    int head = 0,tail=0;

    if(src == NULL || new_str == NULL)
    {
        ret = -1;
        printf("%s is error!(src == NULL || count == NULL)\n",__FUNCTION__);
        return ret;
    }

    tail = strlen(src)-1;

    while(tmp_p[head] != '\0' && isspace(tmp_p[head])){
        head++;
    }

    while(tmp_p[tail] != '\0' && isspace(tmp_p[tail])){
        tail--;
    }

    strncpy(new_str,tmp_p+head,tail-head+1);
    new_str[tail-head+1] = '\0';

    return ret;
}

int getKeyByValude(char *keyvaluebuf,  char *keybuf,  char *valuebuf)
{
    int ret = 0;

    char * p = keyvaluebuf;//辅助指针变量初始化

    if(keyvaluebuf == NULL || keybuf == NULL || valuebuf ==NULL){
        ret = -1;
         printf("%s is error!(keyvaluebuf == NULL || keybuf == NULL || valuebuf ==NULL)\n",__FUNCTION__);
        return ret;
    }
    //1. 从母串中查找子串
    p = strstr(p,keybuf);
    if(p == NULL){
        ret = -1;
        return ret;
    }

    p += strlen(keybuf);//辅助指针变量再次初始化使得下一次可用


    //2. 判断有没有等号
    p = strstr(p,"=");
    if(p == NULL){
        ret = -1;
        return ret;
    }

    p += strlen("=");//辅助指针变量再次初始化使得下一次可用,指向等号后面开始的地方

    //3. 去除等号后面的空格
    ret = trimeSpace(p,valuebuf);//调用自己封装的函数
    if(ret != 0){
        printf("getKeyByValude failed \n");
        return ret;
    }

    return ret;

}

int main(void)
{

   char *keyandvalue = "key2 =         value2   ";
   char *key = "key2";

   char res_str[1024]={0};

    int ret = 0;
    ret = getKeyByValude(keyandvalue,key,res_str);
    if(ret != 0){
        printf("getKeyByValude failed!ret : %d\n",ret);
        return ret;
    }
    printf("res_str:%s\n",res_str);

    printf("\nHello World!\n");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值