C++ 从文件读入后数组的第一个奇怪元素
我在一个sodoku板上读一个文本文件。电路板由9行9位数字表示,如下所示:C++ 从文件读入后数组的第一个奇怪元素,c++,arrays,C++,Arrays,我在一个sodoku板上读一个文本文件。电路板由9行9位数字表示,如下所示: 594632817 123478569 678159234 215346798 346897125 789215346 437561982 851924673 962783451 编辑 以下是将while条件更改为(input>>char)时的结果: 以读取字符的形式输出: 96212486 71931369 48728254 35185947 67350 printArray的输出: 962124867 1931
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())的输出:
结束编辑
问题是,当我将每个数字放入多维数组时,[0][0]处的元素显示为带阴影的问号(用g++编译)。只有当我打印出数组的内容时,问题才会出现,读取的数据看起来很好。对于它的工作,如果我不能>ch,也会发生这种情况)
{
//ch=input.get();
如果(ch!='\n')
{
会议室(8)
j=0;
如果(i>8)
i=0;
计数++;
如果(计数%10==0)
这样做可以读两遍
ch
删除ch=input.get();
,您将正确读取每个数字
while (input >> ch)
{
ch = input.get();
...
}
再次,考虑下面的更改条件以确保正确<代码> EntL/<代码>放置< /P>
if (count % 10 == 0)
cout << endl;
if(计数%10==0)
cout在[0][0]处的元素在其出现的位置显示为一个带阴影的问号
。g++
不可视化变量。当我可以时,它显示为一个外观奇怪的带阴影的问号字符。奇怪字符的十六进制或十进制值是什么?您测试的EOF不正确。搜索堆栈溢出以查找“c++文件结尾”。请尝试while(input>>ch)
。实际上,while循环修复程序不起作用。它为我提供了正确的第一个元素,但数组的其余部分变南了。注释中也提供了此解决方案。谢谢。我仍然想知道为什么eof终止条件会影响输出。
while (input >> ch)
{
ch = input.get();
...
}
if (count % 10 == 0)
cout << endl;
if (count % 9 == 0)
cout << endl;