gpt4 book ai didi

c - 具有不同长度字符串的交错函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:15 25 4
gpt4 key购买 nike

我正在尝试构建一个函数,无论大小如何将两个字符串交织在一起(尽管可以假设它少于 100 个字符)并输出指向新字符串的指针。

char* interleaved(const char* s1, const char* s2){
char *word = malloc (sizeof (char) * 100);
const char *p = s1;
const char *p2 = s2;
int i = 0;
while(*p != '\0' || *p2 != '\0'){
if(i%2 == 0){
word[i] = *p;
p++;
}
if(i%2 == 1){
word[i] = *p2;
p2++;
}
i++;
}
if(*p == '\0'){
while(*p2 != '\0'){
word[i] = *p2;
p2++;
i++;
}
}
if(*p2 == '\0'){
while(*p != '\0'){
word[i] = *p;
p++;
i++;
}
}
word[i] = '\0';
return word;
}

目前,如果两个字符串的长度相同,它会起作用,例如“dog”和“cat”将产生“dcoagt”,但如果字符串不均匀,例如“dogbird”和“cat”,我会得到“dcoagtb”,并且如果第二个字符串更长,我就得到“dcoagt”。在原始 while 循环之后,我的两个 if 语句一定有问题,但我不确定是什么问题,有人可以看看并帮助我吗?

干杯

最佳答案

第一个循环应该使用 && 而不是 ||

while(*p != '\0' && *p2 != '\0')

使用 && 会导致它在任一字符串用完后立即停止。使用 || 使其继续,直到两个 字符串都用完。这很糟糕,因为较短的字符串的指针会从末端直接跑到无人区。

关于c - 具有不同长度字符串的交错函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25756566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com