如何在不输入/空格字符的情况下扫描到2d char数组?

所以我必须制作一个迷宫程序,并开始我必须在迷宫中扫描到2darrays。 当我将chars放入数组时,当输入char和空格char总是占用数组中的第一个插槽时,会出现问题…

这是我的代码:

int main(){ int row, col; int i,j,k,l; scanf("%d", &row); scanf("%d", &col); char** maze = (char**) calloc(row, sizeof(char*)); for ( k = 0; k < row; k++ ) { maze[k] = (char*) calloc(col, sizeof(char)); } for(i=0;i<row;i++){ for(j=0;j<col;j++){ scanf("%c",&maze[j][i]); } } for(k=0;k<row;k++){ for(l=0;l<col;l++){ printf("%c", maze[k][l]); } printf("\n"); } return 0; } 

输出是:

使用enter char:

3

3

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

XX

XXX

XXX

有空间:

3

3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

XX

XXX

XXX

没有任何东西:(这个有效)

3

3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

XXX

XXX

XXX

好的,所以当user3121023 评论时 ,在%c之前放置一个空格
scanf(" %c",&maze[j][i]); 作品!

%之前的空格将跳过前导空格,例如空格和输入。

您可以使用getchar()并在'\n'上重试。 scanf()似乎有点矫枉过正。

 for(i=0;i