2012-03-13 184 views
0

最近,當我用C做代碼,我需要聲明一個二維數組如下:二維字符數組

char foo[20][20]; 

稍後我會到foo指定字符數組。

之後,我需要將這些字符串複製到其他變量。

複製是這樣的:

strcpy(date, foo[0]); 
strcpy(name, foo[1]); 
strcpy(des, foo[6]); 
strcpy(cpy, foo[2]); 

因爲我沒有保持順序在複製像foo[0]foo[1]foo[6]foo[2],我得到了一些垃圾p3與原始字符串一起。
後來我在複製過程中將序列更正爲foo[0]foo[1],foo[2]foo[6],我得到了預期的結果。

請說清楚。

實際上,指針p1,p2,p3和p4是結構中的變量。 結構去喜歡:

struct sample 
{ 
    char date[9]; 
    char name[8]; 
    char des[8]; 
    char cpy[9]; 
}; 
+4

那些'p'字符串是否有空間分配給他們?在你的例子中你有什麼是不合法的語法,所以很明顯這不是你真正的代碼。 – 2012-03-13 05:59:46

+1

如果您可以發佈完整的代碼,會更好。 – Jay 2012-03-13 06:03:08

+1

發佈您的實際代碼,並顯示foo如何初始化。 – 2012-03-13 06:27:43

回答

0

選項之一是,你沒有初始化您結構或您的數組爲0,首先檢查是否調用memset的()正確雙方,使用sizeof()來確保。選項二是你超出了結構成員的大小,你可能想用strncpy()來代替,再用sizeof()。

+0

我用memset,我用strncpy替換了strcpy,即使這樣問題依然存在 – Seelamsetty 2012-03-14 08:44:52