我的头脑变得越来越糟,试图找到这个任务的解决方案,因为我的想法不起作用......
我必须使用指针交织两个char
字符串。请参阅以下示例(此示例不是代码):
char s1 = "My House Black"
char s2 = "Are very near"
结果:"MAyr eH ovuesrey Bnleaacrk"
我该怎么做?
答案 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)
您需要一个足够大的目标字符串来容纳输入字符串和字符串终结符。
然后你应该使用循环(while
或for
),在每次迭代中从每个输入字符串中复制一个字符。
额外学分:
考虑输入字符串长度不等的情况。
答案 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';