首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么这个程序的结果是这样解决方法

2012-03-24 
为什么这个程序的结果是这样#includestring.h main(){charch[] abc ,x[3][4]intifor(i0i 3i++)

为什么这个程序的结果是这样
#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维数组首地址

热点排行