for循环给字符串赋值
#include <stdio.h>
#include <string.h>
main()
{
int k,t;
struct css
{
char cssright[2];
};
css fxb[3][5];
for(k=0;k<3;k++)
{
for(t=0;t<5;t++)
{
if((k==0)&&(t<=2)) strcpy(fxb[k][t].cssright,"BA");
printf("%d ",t);
printf("%d ",k);
printf("%s ",fxb[0][0].cssright); //为什么得到的结果是 BABABA,应该是BA才对啊
printf("%s\n",fxb[0][1].cssright);
}
}
}
----------------解决方案--------------------------------------------------------
等啊等!
----------------解决方案--------------------------------------------------------
if((k==0)&&(t<=2)) strcpy(fxb[k][t].cssright,"BA");
在用strcpy函数时,要保证目的字符数组的长度,这样定义cssright[2]是不行的,因为字符串后有‘\0’,也要占一位,所以定义成cssright[3]就对了。
另外定义结构体数组时,没有赋初值在第一次调用fxb[0][1].cssright时这个值就不确定。
----------------解决方案--------------------------------------------------------
啊,好像是!!!
可还是很奇怪,为什么是BABABA,应该要溢出啊
----------------解决方案--------------------------------------------------------
不知道楼主的程序的K,T 有什么用.
----------------解决方案--------------------------------------------------------
数组在内存中是连续存放的,并且字符串数组以‘\0’作为结束标志。所以你的程序就要出现上面的问题。
----------------解决方案--------------------------------------------------------
...
----------------解决方案--------------------------------------------------------
如果不怕麻烦可以用纸上一步一步来,这个也可以训练读程序能力。
----------------解决方案--------------------------------------------------------