我有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
答案 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