我想从一个字符串的前缀和另一个字符串的后缀创建一个新字符串

时间:2019-03-01 11:30:35

标签: c

我有2个字符串:A和B。

A = "cat"
B = "dog"

我想要的是从第一个字符串获取前缀,并从另一个字符串获取后缀。

C = "cg"

并写出所有组合:

cg
cog
cdog
cag
caog
cadog
catg
catog
catdog

并打印出总数为n = 9的可能组合。

这是我尝试过的:

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


main(){

    FILE * f;
    f = fopen("nova.txt","r");


    char a[100];
    char b[100];

    fscanf(f,"%s",&a);
    fscanf(f,"%s",&b);

    int a_d = strlen(a);
    int b_d = strlen(b);


    char nova[a_d*b_d][a_d+b_d];
    int i,j,k,l;

    for(i = 0; i < a_d; i++){
        for(j = 0; j < b_d; j++){
            for(k = 0; k < a_d; k++)
                nova[a_d*b_d][a_d+b_d] = a[k];
            for(l = b_d; l > 0; l--)
                nova[a_d*b_d][a_d+b_d] = b[l];
        }
    }

    for(i=0;i<strlen(nova);i++){
        printf("%s",nova);
    }


}

这是我的nova.txt文件:

cat
dog

编辑:

当前输出:

e 

1 个答案:

答案 0 :(得分:1)

您可以修改以下程序以满足您的要求。

#include <stdio.h>

int main()
{
    char *str1 = "cat";
    char *str2 = "dog";
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    char *str3 = malloc(len1 + len2 + 1);
    int prefix, sufix;

    for (prefix = 0; prefix < len1; prefix++)
    {
        /* Reset the string. */
        memset(str3, 0, sizeof(str3));

        /* Copy the prefix. */
        memcpy(str3, str1, (prefix + 1));

        for (sufix = len2 - 1; sufix >= 0; sufix--)
        {
            /* Manually concatincate the sufix. */
            memcpy((str3 + prefix + 1), (str2 + sufix), (len2 - sufix));

            /* Print the current combination. */
            printf("%s\r\n", str3);
        }
    }

    return 0;
}

输出:

cg 
cog
cdog
cag
caog
cadog
catg
catog
catdog