#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.
我这个没有用到多余的空间,一个都没有。
#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;
}
#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");
}