如何用C中的指针交织两个char

时间:2011-11-08 15:54:14

标签: c pointers

我的头脑变得越来越糟,试图找到这个任务的解决方案,因为我的想法不起作用......

我必须使用指针交织两个char字符串。请参阅以下示例(此示例不是代码):

char s1 = "My House Black"
char s2 = "Are very near"

结果:"MAyr eH ovuesrey Bnleaacrk"

我该怎么做?

6 个答案:

答案 0 :(得分:0)

这里有一个提示(伪代码):

result = ""
for i = 0 to longest string's length:
    result += some character      (whose?)
    result += another character   (also, whose?)

小心:你需要在某处检查一下,否则可能会发生不好的事情。

答案 1 :(得分:0)

由于这是作业,我只会给你一个大纲。

首先声明你的两个字符串:

const char *s1 = "My House Black";
const char *s2 = "Are very near";

接下来声明两个指向char的指针:

char *p1 = s1;
char *p2 = s2;

现在输入while循环。条件应该是*p1*p2不等于零。

如果循环输出*p1不为零,则输出*p2,如果不为零则输出{{1}}。如果指针指向非零字符,则递增每个指针。

就是这样,你完成了!

答案 2 :(得分:0)

由于这是标记的作业,我不想直接发布代码。但是创建三个字符数组,每个输入一个,一个足够长以包含输出,并且一次遍历输入字符数组一个字符(使用指针算术)。将字符存储到输出字符串中。继续,直到到达每个字符串的末尾。不要忘记空终止!

答案 3 :(得分:0)

您需要一个足够大的目标字符串来容纳输入字符串和字符串终结符。

然后你应该使用循环(whilefor),在每次迭代中从每个输入字符串中复制一个字符。

额外学分:

考虑输入字符串长度不等的情况。

答案 4 :(得分:0)

尝试:

int total = strlen(char1) + strlen(char2);
int i1 = 0, i2 = 0;
for(i = 0; i < total; i++)
{
    if(i % 2 == 0)
    {
        result[i] = char1[i1];
        i1++;
    }
    else
    {
        result[i] = char2[i2];
        i2++;
    }
}

答案 5 :(得分:0)

这是你想要的吗?

char * s1 = "My House Black";
char * s2 = "Are very near";

char * s = (char *)malloc(strlen(s1) + strlen(s2) + 1);

char * p1 = s1;
char * p2 = s2;
char * p = s;
while (*p1 && *p2)
{
    *p++ = *p1++;
    *p++ = *p2++;
}
while (*p1)
{
    *p++ = *p1++;
}
while (*p2)
{
    *p++ = *p2++;
}
*p = '\0';