使用a-z和max为4 char的组合生成变量的C代码

时间:2013-09-30 08:14:23

标签: c concatenation

我正在尝试编写一个代码,只使用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]);

它产生了一个分段错误。我明白我可能会以错误的方式做到这一点。任何人都可以告诉我我在哪里做错了。

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