为什么这个程序的结果是这样
#include "string.h "
main()
{
char ch[]= "abc ",x[3][4]; int i;
for(i=0;i <3;i++) strcpy(x[i],ch);
for(i=0;i <3;i++) printf( "%s ",&x[i][i]);
printf( "\n ");
}
运行后的输出结果是 abcbcc
x[i][i]不是只有三个数的吗?怎么出了六个,高手分析下程序,谢谢
[解决办法]
abc
abc
abc
&x[0][0]: abc
&x[1][1]: bc
&x[2][2]: c
[解决办法]
原因应该在输出是选用s%格式。输出字符串的时候只有当遇到\0的时候才会结束。x[0]=x[1]=x[2]= "abc\0 ",所以s%输出时x[0][0]输出abc,x[1][1]输出bc,x[2][2]输出c
[解决办法]
printf( "%s ",&x[i]);
[解决办法]
敬礼
[解决办法]
chai2010(C++/Qt...) :
很明了!
顶!
[解决办法]
#include "string.h "
main()
{
char ch[]= "abc ",x[3][4];
int i;
for(i=0;i <3;i++)
strcpy(x[i],ch);
for(i=0;i <3;i++)
printf( "%s ",x[i]);
printf( "\n ");
}
按字符串%S输出 只需写上数组首地址就好了 二维数组 x[1]表示第一个2维数组首地址
X表示整个2为数组首地址 也就是第一个2维数组首地址