我有一个程序在主函数之外有一个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有关。我希望迷宫阵列中的一行一次写入,然后该行中的每个元素都被一个字母占用,但我似乎无法做到这一点。
答案 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]);
}
}
如果您需要更多帮助,请随时发表评论。