-1

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

char string_y2m[2][8];

然后我只是用memset()0初始化它:

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

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

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

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

4

2 回答 2

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");

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

于 2012-09-13T09:06:07.943 回答
1

只是不要使用赋值,而是从一开始就正确初始化数组:

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

这将初始化所有未显式初始化为 的字符0

于 2012-09-13T09:35:23.203 回答