我的字符数组定义如下:char *c[20];
我正在尝试:strcpy(c[k], "undefined);
但它无效
我也尝试将其定义为char c[20][70]
而没有运气。
编辑:我实际上知道它是一个字符数组数组,我需要它。
答案 0 :(得分:8)
那不是一个字符数组;这是一个字符指针数组。删除*
以使其成为字符数组:
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");
答案 1 :(得分:3)
如果您想要的是每个70个字符串的20个字符串,那么您的第二个选项应该有效:
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]);