Arrays 为什么这个for循环不停地运行?

Arrays 为什么这个for循环不停地运行?,arrays,for-loop,multidimensional-array,scanf,Arrays,For Loop,Multidimensional Array,Scanf,我有一个在主功能外带有for循环的程序: #include <stdio.h> void inputMaze(char maze[], int maxX, int maxY); int main() { //Number of columns int maxX= 0; //Number of rows int maxY= 0; printf("Number of rows? "); scanf("%d", &maxY); printf("Number of column

我有一个在主功能外带有for循环的程序:

#include <stdio.h>

void inputMaze(char maze[], int maxX, int maxY);

int main()
{
//Number of columns
int maxX= 0;
//Number of rows
int maxY= 0;

printf("Number of rows? ");
scanf("%d", &maxY);
printf("Number of columns? ");
scanf("%d", &maxX);
if(maxX*maxY>300){
    printf("Number of cells exceeds maximum!/n");
}
char maze[maxX][maxY];
inputMaze(maze,maxX, maxY);
return 0;
}

void inputMaze(char maze[], int maxX, int maxY){
int i;
for(i=0; i<maxY; i=i+1){
        printf("Input row %d ", i);
        scanf(" %c", &maze[i]);

}
}

我不想输入第1行输入第2行。。。。像这样印刷。我正在尝试获取它,以便它每次在新行上打印输入行I,用户可以输入新行。我认为问题可能与将scanf存储到2D阵列有关。我希望一次写入迷宫数组中的一行,然后该行中的每个元素都被一个字母占用,但我似乎无法做到这一点。

问题在于这句话

scanf(“%c”和maze[i])

你试图逐字阅读,这是错误的。必须将最大行作为字符串读取。我已经在这里生成了工作代码

#include <stdio.h>

void inputMaze(char maze[], int maxX, int maxY);

int main()
{
//Number of columns
int maxX= 0;
//Number of rows
int maxY= 0;

printf("Number of rows? ");
scanf("%d", &maxY);
printf("Number of columns? ");
scanf("%d", &maxX);
if(maxX*maxY>300){
    printf("Number of cells exceeds maximum!/n");
}
char maze[maxX][maxY];
inputMaze(maze,maxX, maxY);
return 0;
}

void inputMaze(char maze[], int maxX, int maxY){
int i;
for(i=0; i<maxY; i=i+1){
        printf("Input row %d\n", i);
        scanf("%s", &maze[i]);

}
}
#包括
无效输入迷宫(字符迷宫[],int-maxX,int-maxY);
int main()
{
//列数
int max=0;
//行数
int-maxY=0;
printf(“行数?”);
scanf(“%d”和&maxY);
printf(“列数?”);
scanf(“%d”和&maxX);
如果(最大x*最大y>300){
printf(“单元数超过最大值!/n”);
}
字符迷宫[maxX][maxY];
输入迷宫(迷宫,maxX,maxY);
返回0;
}
无效输入迷宫(字符迷宫[],int-maxX,int-maxY){
int i;

for(i=0;iThanks!所以基本上您只是将%c更改为%s,这会自动将字符串添加为数组?如果我将maxX和maxY设置为6并输入一个7个字符的字符串,程序为什么不会崩溃/数组空间不足?编辑:它在数组中看起来像什么?当我添加在迷宫中打印%c的for循环时[i]它似乎只打印每行的第一个符号。你能用ideone运行它并在这里发布链接吗?我准备好帮助你。你应该学习如何使用二维数组。如果你需要任何帮助,请随时发表评论。这是一个很好的帮助:)
#include <stdio.h>

void inputMaze(char maze[], int maxX, int maxY);

int main()
{
//Number of columns
int maxX= 0;
//Number of rows
int maxY= 0;

printf("Number of rows? ");
scanf("%d", &maxY);
printf("Number of columns? ");
scanf("%d", &maxX);
if(maxX*maxY>300){
    printf("Number of cells exceeds maximum!/n");
}
char maze[maxX][maxY];
inputMaze(maze,maxX, maxY);
return 0;
}

void inputMaze(char maze[], int maxX, int maxY){
int i;
for(i=0; i<maxY; i=i+1){
        printf("Input row %d\n", i);
        scanf("%s", &maze[i]);

}
}