求助!C++编程二维数组导入文件里的数字后输出的却是乱码。
我的代码如下:
#include<fstream>
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
ifstream in("9_1.txt"); //定义输入文件流
cout<<"从9_1.txt文件中导入的5*5列的矩阵为:"<<endl;
int a[5][5],sum=0;
int i,j;
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
in>>a[i][j]; //把文件中的数据读取到程序中
}
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
cout<<setw(3)<<a[i][j]<<" ";
}
cout<<endl; //屏幕上显示矩阵
//==============================================================================
for( i=0;i<5;i++) //输出对角元素之和
{
for( j=0;j<5;j++)
if(j==i) sum+=a[i][j];
if(j==(5-1-i)) sum+=a[i][j];
}
cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;
return 0;
}
输出的是乱码,实在不知道错在哪里。。
下面是我输出:
被这个问题折磨很久了。感激不尽! 展开
有2点:
第一点:你的txt有1.1之类的值,就不应该定义成int a[5][5]
第二点:你的txt文件放错了地方,导致程序运行的时候找不到,这一点跟你运行程序的方式有关,如果你是通过IDE启动的(例如Visisual Studio或者Visual C++),那么txt文件一般要放在工程的根目录,如果你是在命令行来执行,你在哪个目录执行exe,就放在exe同目录就好,所以其实不是乱码,而是没有读取到文件的时候,数组的值没有被程序初始化,是随机的数值
代码修改成如下:
#include<fstream>
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
ifstream in("9_1.txt"); //定义输入文件流
//加了判断处理
if(!in.is_open())
{
cout<<"打开文件失败"<<endl;
return 1;
}
//---end 加了判断处理
cout<<"从9_1.txt文件中导入的5*5列的矩阵为:"<<endl;
//修改了变量类型
//int a[5][5],sum=0;
double a[5][5],sum=0;
//--- end //修改了变量类型
int i,j;
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
in>>a[i][j]; //把文件中的数据读取到程序中
}
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
cout<<setw(3)<<a[i][j]<<" ";
}
cout<<endl; //屏幕上显示矩阵
//==============================================================================
for( i=0;i<5;i++) //输出对角元素之和
{
for( j=0;j<5;j++)
if(j==i) sum+=a[i][j];
if(j==(5-1-i)) sum+=a[i][j];
}
cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;
return 0;
}
看我上面的代码,把txt放在不同的地方就会导致两种截然不同的运行结果
这里不对
该怎么改呢?
#include
#include
#include
using namespace std;
int main()
{
ifstream in("9_1.txt"); //定义输入文件流
cout>a[i][j]; //把文件中的数据读取到程序中
}
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
cout<<setw(3)<<a[i][j]<<" ";
cout<<endl; /*修改*/
}
cout<<endl; //屏幕上显示矩阵
//==============================================================================
for( i=0;i<5;i++) //输出对角元素之和
{
for( j=0;j<5;j++)
if(j==i) sum+=a[i][j];
if(j==(5-1-i)) sum+=a[i][j];
}
cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;
return 0;
}