如何在C语言中用指针交错两个字符

如何在C语言中用指针交错两个字符,c,pointers,C,Pointers,因为我的想法不起作用,所以我在试图为这项任务找到解决方案时,脑子越来越坏 我必须使用指针交错两个char字符串。请参见以下示例(此示例不是代码): 结果:“MAyr eH ovuesrey Bnleaacrk” 我如何才能做到这一点?这里有一个提示(伪代码): 小心:你需要在某个地方检查一下,否则可能会发生不好的事情。因为这是家庭作业,我只给你一个提纲 首先声明两个字符串: const char *s1 = "My House Black"; const char *s2 = "Are very

因为我的想法不起作用,所以我在试图为这项任务找到解决方案时,脑子越来越坏

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

结果:
“MAyr eH ovuesrey Bnleaacrk”

我如何才能做到这一点?

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


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

因为这是家庭作业,我只给你一个提纲

首先声明两个字符串:

const char *s1 = "My House Black";
const char *s2 = "Are very near";
接下来声明指向
char
的两个指针:

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

如果不是零,则在循环内部输出
*p1
,如果不是零,则输出
*p2
。如果指针指向非零字符,则递增每个指针


就这样,你完了

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

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

然后,您可能应该使用一个循环(
while
for
),在该循环中,您可以在每次迭代中从每个输入字符串复制一个字符

额外学分:

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

尝试:

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++;
    }
}
int-total=strlen(char1)+strlen(char2);
inti1=0,i2=0;
对于(i=0;i
这就是你想要的吗

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';

我们不会帮你做家庭作业的。告诉我们你在哪里绊倒。为输出声明的内存在哪里?@Poodlehat我没有声明输出字符串。据我所知,输出可以是控制台(例如,
printf
),这是一个家庭作业问题。你不应该为学生做家庭作业。请阅读并查看家庭作业标记说明。@user997683 1。“不起作用”是非常粗鲁的。2.它确实有效,事实上是你问题的标准解决方案。3.当你说你不需要代码,只需要想法时,你是诚实的吗?
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++;
    }
}
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';