二维字符数组

时间:2012-03-13 05:43:21

标签: c arrays char

最近,当我在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];
};

1 个答案:

答案 0 :(得分:0)

选项一是你没有初始化你的结构或你的数组为0,首先检查你是否正确调用memset(),使用sizeof()来确保。

选项二是你覆盖结构成员大小,你可能想要再次使用strncpy()和sizeof()。