用c++将文本文件存入数组问题

来源:百度知道 编辑:UC知道 时间:2024/09/13 03:05:12
# include <fstream.h>
# include <iomanip.h>
# include <stdlib.h>
void main(void)
{
int n,m;
cout < <"输入n,m的值:";
cin>>n;
cin>>m;
char a[100][100];
int i,j;
char fname[256];
cout < <"输入文件名:";
cin>>fname;
ifstream infile;
infile.open(fname,ios::in | ios::nocreate);
if (!infile)
{ cout < <"不能打开输入文件" < <fname;
exit(1);
}
for (i=0;i <n;i++)
for (j=0;j <m;j++)
infile>>a[i][j]; //从文本文件中提取数据到二维数组元素中
cout < <"二维数组的元素值:" < <endl;
for (i=0;i <n;i++)
{ for (j=0;j <m;j++)
cout < <setw(10) < <a[i][j]; //输出二维数组的元素值
cout < <endl;
}
infile.close();
}

编写了一段代码,用于从文本文件中读出数据

你声明了char a[100][100]; 因此infile>>a[i][j];每次读取的是一个字符.

要想显示正确,就要把a看成一维字符串数组,用infile>>a[i]类似的形式一次读一个以空格为分隔符的字符串

我猜你的
a1 a2 a3
a4 a5 a6
a7 a8 a9

应该是想表达为0xa1 式样的 16进制数字吧?

如果是这样的话你少写了一点点东东
因此infile>>a[i][j];每次读取的只有一个字符.

1 数据a[100][100]的类型修改为int
2 infile>>a[i][j]修改为infile>>hex>>a[i][j]
3 cout<<setw(10)<<a[i][j]修改为cout<<setw(10)<<hex<<a[i][j]

infile.write((char*)&a[0][0],sizeof a);
把读入的语句改成这个试试看。