如何在c中交织两个字符串

时间:2013-03-06 06:05:30

标签: c string

我正在尝试编写一个程序,在C中接受两个字符串输入,然后在两个字符串隔行扫描时产生结果。

我想要的一个例子:

input: abdc
input: efgh

result: aebfdgch

这是我到目前为止对该部分的一点代码。

#include <stdio.h> 
#include <string.h>

#define maxLen 100

int main() {

   char string1[maxLen];
   char string2[maxLen];

   printf("please enter a string of up to 100 characters: ");
   fgets(shuffleString,maxLen,stdin);

   printf("please enter another string of up to 100 characters: ");
   fgets(shuffleString2,maxLen,stdin);

   return 0;
}

我已经尝试了很多东西来进行洗牌工作,但我似乎没有。这是一个家庭作业,所以我不是想让别人为我编写代码,但是一些例子和解释会很好。另外,如果它还不是很明显,这是针对intructory C级的,所以我希望保持尽可能接近我的水平。

2 个答案:

答案 0 :(得分:0)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strlace(char *str1, char *str2)
{
    int i;
    int len = strlen(str1) + strlen(str2) + 1;
    char *str = (char*)malloc(len * sizeof(char));

    for (i = 0; i < strlen(str1); ++i) {
        str[i*2] = str1[i];
    }

    for (i = 0; i < strlen(str2); ++i) {
        str[1+i*2] = str2[i];
    }

    str[len - 1] = 0;

    return str;
}

int main()
{
    char *str1 = "abdc";
    char *str2 = "efgh";
    char *str3 = strlace(str1, str2);

    puts(str3);

    free(str3);

    return 0;
}

似乎有效。 请享用。

答案 1 :(得分:0)

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

#define maxLen 100

char *
strinter(char *s1, char *s2)
{
    char *dst;
    int len = strlen(s1) + strlen(s2);

    dst = malloc(len + 1);
    if(dst == NULL)
        return NULL;
    for(;*s1 || *s2;){
      if(*s1)*dst++ = *s1++;
      if(*s2)*dst++ = *s2++;
    }
    *dst = '\0';
    return dst - len;
}

void
chomp(char *s)
{
    char *p = strchr(s, '\n');
    if(p != NULL)
        *p = '\0';
}

int
main(void)
{
    char string1[maxLen];
    char string2[maxLen];
    char *string3;

    printf("please enter a string of up to 100 characters: ");
    fgets(string1, maxLen, stdin);

    printf("please enter another string of up to 100 characters: ");
    fgets(string2, maxLen, stdin);

    /* remove newlines */
    chomp(string1);
    chomp(string2);

    string3 = strinter(string1, string2);
    if(string3 == NULL)
        return 1;
    printf("%s\n", string3);
    free(string3);
    return 0;
}

即使两个输入字符串的长度不同,这也会有效。