【发布时间】:2010-06-03 14:00:00
【问题描述】:
char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";
我想为 var[0][0,1,2] 分配一个字符串,它是“ANS”,但不起作用,我不知道我错在哪里
【问题讨论】:
char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";
我想为 var[0][0,1,2] 分配一个字符串,它是“ANS”,但不起作用,我不知道我错在哪里
【问题讨论】:
您已经回答了自己的问题。您想将 var[0][0,1,2,3] 分配给“ANS”,对吗?好吧,“ANS”是一个字符数组,ans[0,1,2,3](不要忘记空终止符)。所以你必须单独分配每一个。在 C 中,字符串不是数据类型,它们只是其他变量的数组(确切地说是字符)。你可以做的是:
strcpy(var[0], "ANS");
哪个会为您逐字节复制。
然而,strcpy 有一些陷阱。首先,目标 char 数组(在本例中为 var[0])必须足够大以包含字符串。它不会为您检查(实际上它不能),因此如果您不小心,可能会导致缓冲区溢出。此外,源必须以 NULL 结尾。
【讨论】:
也许改为使用,
strncpy(var[0], "ANS", 3);
【讨论】:
当你写作时
var[0][] = "ANS"
编译器尝试将“ANS”分配给 var[0][0],这是一个只存放一个字符的地方。
因此,您应该使用 strcpy 函数。 strcpy 将逐个字符地复制。
【讨论】: