我正在尝试编写一个代码,只使用a-z生成变量,最多4个char,这意味着总共有26 * 26 * 26 * 26个组合。所以这就是我在做什么
#include<stdio.h>
static char vcd_xyz[4];
static char vcd_xyz1[2];
int main()
{
int i,j;
for(i=0;i<26;i++)
{
vcd_xyz[1] = 'a'+i;
printf("%d generated variable is initial is = %c \n",i,vcd_xyz[1]);
for(j=0;j<26;j++)
{
vcd_xyz[2] = 'a'+j;
printf("%d generated variable is = %c \n",j,vcd_xyz[2]);
//strcat(vcd_xyz[1],vcd_xyz[2]);
}
}
return 0;
}
所以它会产生类似这样的东西
0 generated variable is initial is = a
0 generated variable is = a
1 generated variable is = b
2 generated variable is = c
3 generated variable is = d
4 generated variable is = e
5 generated variable is = f
6 generated variable is = g
7 generated variable is = h
8 generated variable is = i
9 generated variable is = j
10 generated variable is = k
11 generated variable is = l
12 generated variable is = m
13 generated variable is = n
14 generated variable is = o
现在我要做的是连接这两个字符,以便我可以得到像这样的组合,aa,ab,ac,ad ...... ba,bb,bc,bc .... ca,cb ......等等,但是当我使用时
strcat(vcd_xyz[1],vcd_xyz[2]);
它产生了一个分段错误。我明白我可能会以错误的方式做到这一点。任何人都可以告诉我我在哪里做错了。
答案 0 :(得分:3)
strcat
的参数应该是字符串而不是字符。只需将角色放在彼此旁边,就像现在这样,它应该起作用。但是从索引0
开始(因为所有C数组都在零开始索引)。
此外,如果您以后想要将数组打印为字符串,则数组中需要第五个字符,这是字符串终止符'\0'
和终结符字符需要放在数组中的最后一个字符之后。
答案 1 :(得分:1)
我按照Joachim Pileborg的话来说明了这一点:
#include<stdio.h>
static char vcd_xyz[5];
static char vcd_xyz1[2];
int main()
{
int i,j;
vcd_xyz[2] = '\0';
for(i=0;i<26;i++)
{
vcd_xyz[0] = 'a'+i;
printf("%d generated variable is initial is = %c \n",i,vcd_xyz[0]);
for(j=0;j<26;j++)
{
vcd_xyz[1] = 'a'+j;
printf("%d generated variable is = %c \n",j,vcd_xyz[1]);
puts(vcd_xyz);
}
}
return 0;
}