为什么这个for循环不断停止?

时间:2017-09-21 07:48:02

标签: 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 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]);

}
}

输出给了我这个:

Number of rows? 10
Number of columns? 10
Input row 0 S#####
Input row 1 Input row 2 Input row 3 Input row 4 Input row 5 Input row 6 D.....
Input row 7 Input row 8 Input row 9
Process returned 0 (0x0)   execution time : 11.526 s
Press any key to continue.

我不希望输入第1行输入第2行....这样打印。我试图得到它,以便每次在新行上打印输入行i,并且用户可以输入新行。我认为问题可能与存储到2D阵列的scanf有关。我希望迷宫阵列中的一行一次写入,然后该行中的每个元素都被一个字母占用,但我似乎无法做到这一点。

1 个答案:

答案 0 :(得分:1)

问题出在本声明中

  

scanf(“%c”,&amp; maze [i]);

你试图按字符逐字阅读,这是错误的。您必须将maxY行读为字符串。我在这里制作了工作代码。

#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]);

}
}

如果您需要更多帮助,请随时发表评论。