我的文件包含带随机数的20x20矩阵。我已经阅读了文件中的数字,然后存储在数组中。似乎我实际上没有将数字分配给数组,因为当我打印出一个数字时,它显示的内容类似于“||”而不是数字,请参阅第cout <<array[0][1]
行。我的完整代码如下:
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
#define length 20
int main(){
char array[length][length];
char chs;
ifstream grid;
grid.open("D:\\Example\\digit.txt", ios::in);
while (!grid.eof()){
for (int i = 0; i < 19; i++){
for (int j = 0; j < 19; j++){
grid.get(chs);
if (!grid.eof()){
array[i][j] = chs;
cout << setw(1) << array[i][j];///It display the numbers on file, there is no problem here.*/
}
}
}
}
cout <<array[0][2];//There is problem it can not display the number it display something different than numbers.
grid.close();
while (1);
}
consol的输出,文件上的数字看起来就像这样。 cout <<array[0][3]
无法打印
我已经改变了最后一部分
cout << endl;
for (int i = 0; i < 19; i++){
for (int j = 0; j < 19; j++){
cout << array[i][j];
}
}
cout << endl;
grid.close();
输出与文件上的数字不同的最后一部分
答案 0 :(得分:2)
您的内部循环仅针对当前值i
运行,这意味着您不会在第一行中读取任何值,而在第二行中不会读取任何值等。
for (int i = 0; i < 19; i++){
for (int j = 0; j < i; j++){
// ^ wrong
如果你想读取20x20矩阵,你的内循环和外循环都应该运行20次迭代。
for (int i = 0; i < 19; i++){
for (int j = 0; j < 19; j++){
// ^^
另请注意,您可能需要添加一些代码来处理输入文件中的任何换行符。在每组20个数字之后,您将有一个(\n)
或两个(\r\n
)字符表示换行符。这些是文本文件的有效部分,但可能不需要存储在你的阵列中。