【问题标题】:C code to generate variable with the combination of a-z and max of 4 char用 a-z 和 4 个字符的最大值组合生成变量的 C 代码
【发布时间】:2013-10-06 00:45:22
【问题描述】:

我正在尝试编写一个仅使用 a-z 和最多 4 个字符生成变量的代码,这意味着总共 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]);

它会产生分段错误。我知道我可能会以错误的方式进行操作。谁能告诉我哪里做错了。

【问题讨论】:

  • 缩进是对读者的礼貌

标签: c concatenation


【解决方案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;
}

【讨论】:

  • @shailendra 你好
【解决方案2】:

strcat 的参数应该是 strings 而不是 characters。只需像现在一样将字符彼此相邻放置,它应该可以工作。但是从索引 0 开始(因为所有 C 数组都从零开始索引)。

另外,如果你以后想把数组打印成字符串,你需要数组中的第五个字符,也就是字符串终止符'\0',那个终止符需要放在数组中最后一个字符之后。

【讨论】:

  • 他为什么需要第五个字符?他几乎不使用 2
  • @NoIdeaForName OP 声明需要四个字符的组合,因此四个字符的字符串需要一个大小为 5 的数组来包含终止符。
  • 嗯,这对我有用..我之前对 strcat 有疑问“strcat 的参数应该是字符串而不是字符”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2021-12-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多