C 将字符串指定给二维数组

C 将字符串指定给二维数组,c,string,arrays,2d,C,String,Arrays,2d,我想给var[0][0,1,2]分配一个字符串,它是“ANS”,但不起作用,我想不出我在这方面的错误在哪里您已经回答了您自己的问题。您想将var[0][0,1,2,3]分配给“ANS”,对吗?“ANS”是一个字符数组,ANS[0,1,2,3](不要忘记空终止符)。因此,您必须单独分配每个。在C语言中,字符串不是数据类型,它们只是其他变量的数组(确切地说是字符)。你可以做的是: char in[100], *temp[10],var[10][10]; int i, n = 0, double va

我想给var[0][0,1,2]分配一个字符串,它是“ANS”,但不起作用,我想不出我在这方面的错误在哪里

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

char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";
它将为您逐字节复制


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

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

char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";
它将为您逐字节复制

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

也许可以使用

strcpy(var[0], "ANS");
也许相反

strcpy(var[0], "ANS");
当你写作时

strncpy(var[0], "ANS", 3);
编译器尝试将“ANS”分配给var[0][0],这是一个仅用于一个字符的位置

因此,应该使用strcpy函数。strcpy将在写入时逐字符复制。

strncpy(var[0], "ANS", 3);
编译器尝试将“ANS”分配给var[0][0],这是一个仅用于一个字符的位置

因此,应该使用strcpy函数。strcpy将逐字符复制字符