动态二维数组分配有问题啊 为什么行和列相同才能给数组赋值
#include <stdio.h>#include <stdlib.h>
void fun(char **p1,char *p2,int p,int q);
int main()
{
int m,n,g,d,f;
char **x;
char *y;
puts("输入行和列");
scanf("%d %d",&m,&n);
while(getchar()!='\n')
continue;
d=m*n;
printf("%d %d",m,n);
x=(char **)malloc(m* sizeof(char *));
for(g=0;g<m;g++)
x[g]=(char *)malloc(n*sizeof(char)+1);
puts("输入二维数组各项");
for(g=0;g<m;g++)
{
gets(x[g]);
}
y=(char *)malloc(sizeof(char)*m*n+1);
fun(x,y,m,n);
for(g=0;g<m;g++) //输出检验
{
for(f=0;f<n;f++)
putchar(x[g][f]);
putchar('\n');
}
putchar('\n');
puts(y);
putchar('\n');
free(x);
free(y);
return 0;
}
void fun(char **p1,char *p2,int p,int q)
{
int i,j,l=0;
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
{
p2[l]=p1[j][i];
l++;
}
}
p2[l]='\0';
}
RT 只有在m,n相同的时候才能执行到最后