c语言编程:输入两个字符串str1,str2 ,将两个字符串交叉 得到第三个字符串str3,输出.

2024-12-02 04:51:26
推荐回答(3个)
回答1:

#include 
#include 
#include 

int main(void) {
char str11[] = "1234567";
char str21[] = "fwefjsodfijso";
char *str3 = NULL;
char *str1 = str11, *str2 = str21;

int len = strlen(str1) + strlen(str2) + 1;
str3 = (char *)malloc(len);
char *p = str3;
for ( ; *str1 != '\0' && *str2 != '\0'; ++str1, ++str2) {
*str3++ = *str2;
*str3++ = *str1;
}
for ( ; *str1 != '\0'; ++str1)
*str3++ = *str1;
for ( ; *str2 != '\0'; ++str2)
*str3++ = *str2;
*str3 = '\0';
printf("%s\n", p);
return 0;
}

依据你的内容写好的str1,str2,最后输入了str3.

我这个没有用到多余的空间,一个都没有。

回答2:

#include 
int main(void)
{
    char str1[50], str2[50];
    char str3[100];
    int i, j;

    gets(str1);
    gets(str2);
    for(i = 0, j = 0; str1[i] != '\0' && str2[i] != '\0'; i++)
    {
        str3[j++] = str2[i];
        str3[j++] = str1[i];
    }

    while(str1[i] != '\0')
        str3[j++] = str1[i++];
    while(str2[i] != '\0')
        str3[j++] = str2[i++];

    str3[j] = '\0';

    printf("%s", str3);

    return 0;
}

回答3:

#include 

void str_add(char* a,char* b){
int i=0;
while(a[i] && b[i]) {
printf("%c%c", a[i],b[i]);
i++;
}
if(a[i]) printf("%s\n", a+i);
if(b[i]) printf("%s\n", b+i);
}
int main(){
str_add("abcd", "ABCDEFG");
str_add("ABCDEFG","abcd");
}