私は、テキストファイルから一連のintを2次元配列に読み込むプログラムを開発中です。
ファイルには、空白を含まない81行の40行が含まれています。ループの後の乱数を返すfile.get()C++
問題は、ループが終了した後に配列を書き出すと、予想される出力の前にarray[0][0]
とarray[0][1]
に2つの乱数が出力されているということです。私はそれが改行文字/改行文字と関係していると思います。ループの最初の反復は完全に実行されます。ここでは、コードは次のとおりです。あなたは関係なく、あなたがgrid[i][j]
に書き込むかどうかのj
をインクリメントするので
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int array[9][9];
//Open file:
fstream ifile;
ifile.open("numbers.txt", ios::in);
if (ifile.fail())
{
cout << "Could not open numbers.txt" << endl;
return -1;
}
while (!ifile.eof())
{
for(int i=0; i<9; i++)
{
for(int j=0; j<9; j++)
{
int n = ifile.get();
if(isdigit(n))
{
array[i][j] = n - '0';
}
cout<<"array ["<<i<<"]["<<j<<"] is "<<array[i][j]<<endl;
}
} cout<<"This is a test"<<endl;
}
return 0;
}
あなたの入力ファイルはどのように見えますか? –
1) 'file.get()'が成功するかどうかを調べることはありません。 2)「n」が数字でなくても「j」をインクリメントし、3)**あなたが持っているエラーを示す短い完全なプログラムを提供してください。 http://sscce.org/を参照してください。 –
@ KornelKisielewiczそれはそれらの間にスペースを持たない81個の数字からなる40行のファイルです – adohertyd