我创建了一个像这样的二维数组:
char string_y2m[2][8];
然后我只是用memset()
0初始化它:
memset(&string_y2m, 0, sizeof(string_y2m));
现在我必须为它分配一些值,但它不起作用。我这样分配它:
string_y2m[2][8] = {"2011-1","2011-01"};
它不起作用,如果我在声明本身做同样的事情,它会起作用。
当目标是一个字符数组并且你没有声明它时,你不能在 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");
此外,在写入字符串之前无需清除空格,因为写入字符串会将字符设置为所需的值。
只是不要使用赋值,而是从一开始就正确初始化数组:
char string_y2m[2][8] = {"2011-1","2011-01"};
这将初始化所有未显式初始化为 的字符0
。