将字符串分配给2D数组

时间:2010-06-03 14:00:01

标签: c string arrays 2d

char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";

我想为var [0] [0,1,2]指定一个字符串'ANS',但不起作用,我无法弄清楚我错在哪里

3 个答案:

答案 0 :(得分:2)

你有点回答了自己的问题。你想将var [0] [0,1,2,3]分配给“ANS”吗? “ANS”是一个字符数组,ans [0,1,2,3](不要忘记null终止符)。所以你必须分别分配每一个。在C字符串中不是数据类型,它们只是其他变量的数组(确切地说是字符)。你可以做的是:

strcpy(var[0], "ANS");

将为您执行逐字节复制。

然而,有一些陷阱需要考虑。首先,目标字符数组(在本例中为var [0])必须足够大以包含字符串。它不会为您检查(实际上它不能),所以如果您不小心,可能会导致缓冲区溢出。此外,源必须以NULL结尾。

答案 1 :(得分:2)

也许改为使用,

strncpy(var[0], "ANS", 3);

答案 2 :(得分:1)

写作时

var[0][] = "ANS"

编译器尝试将“ANS”分配给var [0] [0],这是一个只有一个char的地方。

因此,您应该使用strcpy函数。 strcpy将复制char-by-char。