0

我正在尝试编写一个程序,该程序接受 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;
}

我已经尝试了很多事情来使洗牌工作,但我似乎没有。这是一个家庭作业,所以我不想让别人为我写代码,但是一些例子和解释会很好。另外,如果还不是很明显,这是针对 C 级入门课程的,所以我希望尽可能地接近我的水平。

4

2 回答 2

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;
}

似乎工作。享受。

于 2013-03-06T06:08:18.907 回答
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;
}

即使两个输入字符串的长度不同,这也会起作用。

于 2013-03-06T06:20:00.957 回答