我正在从文本文件中读取sodoku板。该板由9行9位数字表示,如下所示:
594632817
123478569
678159234
215346798
346897125
789215346
437561982
851924673
962783451
修改 的
以下是将while条件更改为(input>> char)时的结果:
读取字符输出:
96212486
71931369
48728254
35185947
67350
printArray的输出:
962124867
193136948
728254351
859476735
�$%w��
����QȿȔ
L�`g�Pw
���w�
这是while(!input.eof())的输出:
�94632817
123478569
678159234
215346798
346897125
789215346
437561982
851924673
962783451
结束编辑
麻烦的是,当我将每个数字放入一个多维数组时,[0] [0]处的元素显示为阴影问号(用g ++编译)。当我打印出数组的内容时,问题才会出现,读入的数据看起来很好。对于它的工作原理,如果我cout<<从主函数开始[0] [0]。
任何帮助将不胜感激!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int createArray(string filename);
bool checkRows(char board[][9]);
bool checkColumns(char board[][9]);
bool checkBoxes(char board[][9]);
void printArray(char board[][9]);
int main ()
{
char board [9][9];
int i = 0;
int j = 0;
int count = 0;
ifstream input("board.txt");
char ch;
while (input >> ch)
{
// ch = input.get();
if (ch != '\n')
{
cout << ch;
board[i][j] = ch;
j++;
if (j % 9 == 0)
{
i++;
}
}
if (j > 8)
j = 0;
if (i > 8)
i = 0;
count++;
if (count % 10 == 0)
cout << endl;
}
input.close();
printArray(board);
cout << checkRows(board) << endl;
cout << checkColumns(board) << endl;
return 0;
}
void printArray(char board[][9])
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cout << board[i][j];
}
cout << endl;
}
cout << board[0][0] << endl;
cout << board[0][1] << endl;
}
答案 0 :(得分:0)
通过这样做,阅读ch
两次。
删除ch = input.get();
,您将正确阅读每个号码。
while (input >> ch)
{
ch = input.get();
...
}
同样,请考虑更改以下条件以确保正确的endl
展示位置
if (count % 10 == 0)
cout << endl;
到
if (count % 9 == 0)
cout << endl;