我创建了一个像这样的二维数组:
char string_y2m[2][8];
然后我只使用memset()
将其初始化为0:
memset(&string_y2m, 0, sizeof(string_y2m));
现在我必须为它分配一些值,但它不起作用。我这样分配了它:
string_y2m[2][8] = {"2011-1","2011-01"};
它不起作用,如果我在声明本身做同样的事情,那就有效。
答案 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
。