标题:字符串的交叉合并
取消只看楼主
程火山
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-5-3
结帖率:25%
已结贴  问题点数:20 回复次数:4 
字符串的交叉合并
想实现 string1 123456789
       string2 abcde
   合并后 string1 1a2b3c4d5e6789
代码如下
 #include <stdio.h>
#include <string.h>

#define N 128

void conj(char *string1, char *string2);

int main(void)
{
    char str1[N * 2], str2[N];

    printf("Please input string1:");
    gets(str1);
    printf("Please input string2:");
    gets(str2);
    conj(str1,str2);
    printf("\nstring1:%s\n", str1);

    return 0;
}
void conj(char *string1, char *string2)
{
    int i=0,j=1,k=1;
    int l1=strlen(string1),l2=strlen(string2);
    char *str=string1;
    *str=*string1;
    *(str+1)=*string2;
    for(i=2; i<=l1+l2; i++)
    {
        if(i%2!=0 && *(string2+j)!='\0')  //不是偶数且字符串2不结束
        {
            *(str+i)=*(string2+j);
            j++;
        }
         else
        {
            *(str+i)=*(string1+k);
            k++;
        }
    }
    *(str+i)='\0';
    i=0;
    for(i=0;*(str+i)!='\0';i++)
    {
        *(string1+i)=*(str+i);
    }

}

为啥结果是这样的???
搜索更多相关主题的帖子: include return 字符串 
2017-05-04 09:34
程火山
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-5-3
得分:0 
回复 2楼 grmmylbs
可是我的string1 没有改变!就是string 1 和string 2 轮流放在strl里的牙!!就是这里不懂??
2017-05-04 14:31
程火山
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-5-3
得分:0 
回复 4楼 yangfrancis
谢谢呀!!代码很简洁!!学习起来!!
2017-05-04 14:36
程火山
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-5-3
得分:0 
回复 7楼 grmmylbs
*(str+1)=*string2;//string1的第二位被改了,但是数字却没有往后移位

可是我这里是改变的str呀!!没有改变string1的!!
2017-05-04 14:53
程火山
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-5-3
得分:0 
谢谢大家!!理清了!
2017-05-04 15:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476680-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.115739 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved