为何输出是这样子的

为啥输出是这样子的啊
#define N 2
int main()
{
char str[N][N],*p;
int i,j;
for(i=0;i<N;i++)

scanf("%s",str[i]);

p=&str[0][0];

for(i=0;i<N;i++)
{
printf("%s ",str[i]);
}
return 0;
}为何输出是这样子的,为什么输出是这样子的
------解决方案--------------------
你设置个断点,单步运行就可以看出原因了。
F9设置断点,F5调试,F10,单步运行
------解决方案--------------------
你像这样输入不会报错吗???
显然你第二个输入已经越界了、、、

字符数组,想要当字符串来用,一定要记得结束时一定加‘\0‘,因此长度要比你输入的长度大1
%s输出时直到遇到'\0'才会结束、、、、