C语言二维数组的赋值问题

我定义了一个数组 char client_data[3][20];
然后从配置文件中读取了(配置文件是 ip=127.0.0.1);
strtok( fgets(ip, 15, p),"=");
q = strtok(NULL, "=");

data[0][20] = *q;
为什么赋值不了?printf(“%s",data[0]);是乱码
定义的数组改成 char data[3][20]了;

第1个回答  2013-01-24
data[0][20]是一个char类型,而且下标越界了,data[0][20]=data[1][0]

*q也是一个char

char *q;定义的变量是q,不是*q,这一点要先理解透彻。追问

为什么这样又可以赋值?

追答

数组的有效下标是从0开始的,str[3][50]已经越界了

可以赋值,不代表就是正确的
str[3][50]=*p;
语法完全正确,但是运行时绝对是错误的
当然在你的这段程序里,你的这个赋值语句没有任何意义,因为str[3][50]和s[0]是等价的

相似回答
大家正在搜