为什么我的2D数组只打印出一个值?

时间:2014-04-03 23:34:29

标签: c arrays 2d

我正在制作一个单词搜索程序,并且正处于开始阶段。我试图让用户输入大小的网格' +'在用户输入进入单词搜索的单词之前。当我运行该程序时,它只打印出一个' +'。为什么它只打印一个值,如何调整我的代码,以便每个值都表示为' +'?我是一名编程初学者,所以任何建议都会有所帮助。谢谢。

#include<stdio.h>

void printmatrix(char matrix[][20],int);

int main(void)
{
   char matrix[20][20]= {{'+'}};
   int x=1;

       printf("How large would you like the puzzle to be (between 10 and 20):\n");

   scanf("%d",&x);

   printmatrix(matrix,x);

   return 0;

}

/********************************************

 Function Name: Printmatrix...this function prints out an empty matrix of the grid size the user asked for

 Inputs: Variables x and y...the row and column variables the user inputted

 Outputs: Empty matrix filled with '+' thats the size the user asked for

********************************************/

void printmatrix(char matrix[][20],int x)
{
   int i,j;

   printf("Empty Puzzle:\n");

   for (i=0;i<x;i++)
   {
      for (j=0;j<x;j++)
      {
          printf("%c", matrix[i][j]);
      }
      printf("\n");
   }

}

2 个答案:

答案 0 :(得分:1)

由于使用了char数组,因此可以使用memset将数组的值设置为相同的值。

memset( matrix , '+' , sizeof( matrix ) ) ;

你编码

char matrix[20][20]= {{'+'}};

只会做

matrix[0][0] = '+' ;

并且数组的其余部分将设置为0.

答案 1 :(得分:1)

您可能希望编写嵌套循环以将矩阵char初始化为&#39; +&#39;:

char matrix[20][20];
int i;
int j;

/* Fill matrix with '+' */
for (i = 0; i < 20; i++) {
    for (j = 0; j < 20; j++) {
        matrix[i][j] = '+';
    }
}