qq_33810074
qq_33810074
采纳率100%
2020-04-27 13:52

请问,为什么buf02和buf03不能一起输出 谢谢。

5
已采纳

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
/*
2、有一个字符串”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)
{
char *p1=souce;
char *p2=buf1;
char *p3=buf2;
int i=0;
int j=1;
if(souce==NULL||buf1==NULL||buf2==NULL)
{
return -1;
}

   while(*p1!='\0')
  {
    *p2++=p1[i];
    *p3++=p1[j];
     i=i+2;
     j=j+2;
  }

return 0;

}
int main ()
{
char buf01[]="1a2b3d4z";
char buf02[64]={0};
char buf03[64]={0};
getStr1Str2(buf01,buf02,buf03);
printf("%s\n",buf02);
printf("%s\n",buf03);
return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 1年前
    #include <stdio.h>
    /*
    2、有一个字符串”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)
    {
        char *p1=souce;
        char *p2=buf1;
        char *p3=buf2;
    
        if(souce==NULL||buf1==NULL||buf2==NULL)
        {
            return -1;
        }
        for (int i = 0; p1[i]; i++)
        {
            if (i % 2 == 0) 
            {
                *p2 = p1[i];
                p2++;
            }
            else
            {
                *p3 = p1[i];
                p3++;
            }
        }
        *p2 = *p3 = 0;
        return 0;
    }
    int main ()
    {
        char buf01[]="1a2b3d4z";
        char buf02[64]={0};
        char buf03[64]={0};
        getStr1Str2(buf01,buf02,buf03);
        printf("%s\n",buf02);
        printf("%s\n",buf03);
        return 0;
    }
    

    图片说明

    问题解决的话,请点下采纳

    点赞 评论 复制链接分享
  • weixin_38431416 违规昵称9527 1年前
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    //从source 的第firstindex位置开始,每隔space个字符提取一个字符放到destStr
    char* getStr(char* source,char* destStr,int firstindex=0,int space=2){
        char *p1=source+firstindex;
        char* mdest = destStr;
        while(*p1 !='\0'){
            *mdest++ = *p1;
            for(int i=0;i<space;i++){
                if(*(p1+i) == '\0'){
                    *mdest++ = '\0';
                    return mdest;
                }
    
            }
            p1 += space;
        }
        *mdest++ = '\0';
        return mdest;
    }
    int main()
    {
        char buf01[]="1a2b3d4z";
        char buf02[64]={0};
        char buf03[64]={0};
        getStr(buf01,buf02,0,2);
        getStr(buf01,buf03,1,2);
        printf("%s\n",buf02);
        printf("%s\n",buf03);
        system("pause");
        return 0;
    }
    测试过工具函数可以拿去直接用。你的代码最严重的的是while循环都没对p1递增,无限循环了。然后思路也不对,既然要用while循环了,却又用i,j+初始位来循环定位。
    
    点赞 评论 复制链接分享
  • zx289544730 zx289544730 1年前

    buf01的结尾不是'\0',getStr1Str2方法里的while执行完得到的结果并不是正确的。

    点赞 评论 复制链接分享
  • qq_34763705 qq_34763705 1年前

    可以啊 你俩个%s就好了啊

    点赞 评论 复制链接分享

为你推荐