二维数组初始化

时间:2012-09-13 09:04:28

标签: c arrays

我创建了一个像这样的二维数组:

char string_y2m[2][8];

然后我只使用memset()将其初始化为0:

memset(&string_y2m, 0, sizeof(string_y2m));

现在我必须为它分配一些值,但它不起作用。我这样分配了它:

string_y2m[2][8] = {"2011-1","2011-01"};

它不起作用,如果我在声明本身做同样的事情,那就有效。

2 个答案:

答案 0 :(得分:3)

当目标是一个字符数组并且你还没有声明它时,你不能在C中指定类似的字符串。

在C中,您需要使用strcpy()将字符串复制到数组中,并大量关注缓冲区大小:

strcpy(string_y2m[0], "2011-1");
strcpy(string_y2m[1], "2011-01");

如果你拥有它,请使用snprintf()

snprintf(string_y2m[0], sizeof string_y2m[0], "%s", "2011-1");
snprintf(string_y2m[1], sizeof string_y2m[1], "%s", "2011-01");

此外,在写字符串之前无需清空空格,因为写字符串会将字符设置为所需的值。

答案 1 :(得分:1)

只是不要使用赋值,但从头开始正确初始化数组:

char string_y2m[2][8] = {"2011-1","2011-01"};

这会将未明确初始化的所有字符初始化为0