Я хочу создать новую строку из префикса одной строки и суффикса другой - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 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 голосов
/ 01 марта 2019

Вы можете изменить следующую программу в соответствии с вашими требованиями.

#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...