我在C中创建一个数独求解器并且无法获得用户输入。我写的代码没有将数据输入到游戏板中,但如果我将Game_Buffer[counter]
更改为Game_Buffer[i]
,则输入数据但只输入9个字符。我知道为什么。我只是想看看他们是否在其他方面存在问题。
我的主要问题是:为什么我使用的方法没有将用户输入数据放入游戏板阵列?
#include <stdio.h>
#include <string.h>
#define CELL 81
int main()
{
// Banner
printf("\t\t\t\tSudoku Solver\n");
printf("\t\t\t***************************\n");
//initialize variables
char Game_Board[9][9];
int i,j;
char Game_Buffer[CELL];
int counter = 0;
printf("Please enter the numbers of the board * denotes a blank space\n");
fgets(Game_Buffer,CELL,stdin);
for(i=0;i<strlen(Game_Buffer);i++)
printf("%c", Game_Buffer[i]);
while(counter < 81)
{
for(i=0; i<9; i++)
for(j=0; j<9; j++)
Game_Board [i][j] = Game_Buffer [counter];
counter++;
}
printf("%d\n", counter);
printf("\t\t\t\t The Board\n");
for( i=0; i<9; i++)
for( j=0; j<9; j++)
{
if( j % 3 == 0)
printf("|");
printf("%c", Game_Board[i][j]);
if(j==8)
printf("|\n");
}
return 0;
}
答案 0 :(得分:3)
循环后执行counter++
。我已经设计了代码以表明我的意思..
for(i=0; i<9; i++)
for(j=0; j<9; j++)
Game_Board [i][j] = Game_Buffer [counter];
counter++;
您正在使用相同的值更新所有单元格。
答案 1 :(得分:3)
你可能应该在第一时间使用括号。
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
Game_Board [i][j] = Game_Buffer [counter];
counter++;
}
}
添加所有缺失的括号并检查您的问题是否仍然存在。