2012-03-13 143 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