最近,当我在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];
};
答案 0 :(得分:0)
选项一是你没有初始化你的结构或你的数组为0,首先检查你是否正确调用memset(),使用sizeof()来确保。
选项二是你覆盖结构成员大小,你可能想要再次使用strncpy()和sizeof()。