6

我有一个定义如下的字符数组:char *c[20];
我正在尝试做:strcpy(c[k], "undefined);但它不起作用

我也尝试将其定义为char c[20][70]没有运气。

编辑:我实际上知道它是一个字符数组的数组,我需要它。

4

2 回答 2

9

那不是字符数组;那是一个字符指针数组。删除*以使其成为字符数组:

char c[20];

然后你可以使用strcpy:

strcpy(c, "undefined");

如果你真的想要一个字符数组的数组,你必须按照你所说的去做:

// array that holds 20 arrays that can hold up to 70 chars each
char c[20][70];

// copy "undefined" into the third element
strcpy(c[2], "undefined");

问题可能是你错过了关闭",但我不知道这是否是一个粘贴错误。或者,问题可能是您在使用k时没有定义它,如果没有看到您收到的错误消息,我们就无法知道。

如果要将它们全部设置为该字符串,则只需循环它们:

char c[20][70];

int i;
for (i = 0; i < 20; ++i)
    strcpy(c[i], "undefined");
于 2011-08-31T00:27:36.137 回答
3

如果您想要的是 20 个字符串,每个字符串包含 70 个字符,那么您的第二个选项应该有效:

char c[20][70];
for (int k = 0; k < 20; k++)
    strcpy(c[k], "undefined");

定义不正确,char *c[20]因为您只是定义了一个由 20 个指针组成的数组,并且指针未初始化。您可以通过以下方式使其工作:

char *c[20];
for (int k = 0; k < 20; k++) {
    c[k] = malloc(70);
    strcpy(c[k], "undefined");
}

// then when you are done with these strings
for (int k = 0; k < 20; k++)
    free(c[k]);
于 2011-08-31T00:29:24.980 回答