题目要求编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为:
W W W W
S S S S
H H H H
则字符串中的内容应是WSHWSHWSHWSH。
为了实现以上要求,我们可以使用双重循环按照先列后行的顺序逐个访问二维数组中的每一个字符数据,将被访问的字符按照顺序拷贝到b所指字符串数组中。
#include <stdio.h>
#define M 3
#define N 4
/* s是一个指向数组的指针,可以看成是数组名字 */
void fun(char (*s)[N], char *b)
{
int i,j,k=0;
for(j=0;j<N;j++)
for(i=0;i<M;i++)
{
b[k]=*(*(s+i)+j);
k++;
}
b[k]= '\0';
}
main()
{
char a[100],w[M][N]={{'W','W','W','W'},
{'S','S','S','S'},
{'H','H','H','H'}};
int i,j;
printf("The matrix:\n");
/* 按照M行N列的格式输出w数组中的内容 */
for(i=0; i<M; i++)
{
for(j=0;j<N; j++)
printf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("The A string:\n");
/* 输出调用fun得到的字符串a */
puts(a);
printf("\n\n");
}