所以我必须制作迷宫程序,并开始我必须在迷宫中扫描到2d阵列。当我将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
答案 0 :(得分:1)
好的,user3121023 commented,在%c
之前加一个空格
scanf(" %c",&maze[j][i]);
有效!
%之前的空格将跳过前导空格,例如空格并输入。
答案 1 :(得分:0)
您可以使用getchar()
并在'\n'
上重试。 scanf()
似乎有点矫枉过正。
for(i=0;i<row;i++){
for(j=0;j<col;j++){
while ( '\n' == (maze[j][i]=getchar() ) );
}
}