2013-10-01 95 views
1

按照我的earlier asked question,我試圖傳遞從代碼生成的值,即hashname(在第四個循環中生成的變量,az的組合,四個字符字符串)到結構成員,使用此代碼。無法將生成的值從for循環傳遞給結構

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循環在structure.I被複制產生最後的值是無法理解爲什麼這是當打印的打印全部由for循環生成的值happening.Although vcd_xyz 。

Variables是指向一個結構VariableNameNumVariableshashname是其成員的指針。 結構變量是結構的成員sss 我宣佈vcd_xyz爲全局變量。

+0

你爲什麼用這個:'sss-> Variables [0]'。不應該等於循環運行的次數 –

+0

可以這麼說,'NumVariables'持有的數值爲for循環生成的值傳遞給結構的次數,怎麼做?意思是我沒有任何線索...... – shailendra

回答

1

這麼多的問題:

  1. 你永遠不增加count好的,你修好了。

  2. 也許你的意思sss->Variables[count]而不是sss->Variables[0]

  3. 和你的條件應該是if(count >= sss->NumVariables)

  4. 您只有break出於最內圈的for -loop。

  5. 您不檢查您的calloc是否失敗。

+0

#5一定不能用作散列名可以最多4個字符和一個變量正在打印,但無論如何,我會用..#4最內圈是一個是產生我要求的所有散列名。 – shailendra