1

根据我之前提出的问题,我正在尝试使用此代码将代码生成的值(即 hashname(在第四个循环中生成的变量,az 的组合,四个字符串))传递给结构成员。

vcd_xyz[4]='\0';
count = 0;
for(int i=0;i<26;i++)
    {
        vcd_xyz[0] = 'a'+i;
       // printf("%d generated variable is   initial is  = %c \n",i,vcd_xyz[0]);

        for(int j=0;j<26;j++)
        {
           vcd_xyz[1] = 'a'+j;
          // printf("%d generated variable is  = %c \n",j,vcd_xyz[1]);
         //  puts(vcd_xyz);
          for(int k = 0;k<26;k++)
          {
             vcd_xyz[2] = 'a' + k;
            // puts(vcd_xyz);
             for(int l=0;l<26;l++)
             {
               vcd_xyz[3] = 'a' +l;
               count++;
             sss->Variables[0].hashname = (char*)calloc(strlen((char*)vcd_xyz)+1,sizeof(char));
             strcpy(sss->Variables[0].hashname,(char*)vcd_xyz);
             if(count>(sss->NumVariables))
             {
                break;
             }

              }
          }
        }
    }

但是根据它的输出,只有for循环产生的最后一个值被复制到结构中。我无法理解为什么会这样。尽管vcd_xyz在打印时打印了for循环生成的所有值。

Variables是一个指向结构的指针VariableNameNumVariableshashname它的成员。结构变量是sss 我已将 vcd_xyz 声明为全局变量的结构的成员。

4

1 回答 1

1

这么多问题:

  1. 你永远不会增加count 好的,你解决了这个问题。

  2. 也许你的意思sss->Variables[count]sss->Variables[0]

  3. 你的条件应该是if(count >= sss->NumVariables)

  4. 你只能break跳出最内层的for循环。

  5. 你不检查你是否calloc失败。

于 2013-10-01T06:52:38.707 回答