C++ 读入数据

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:28:08
从键盘中输入20个整数实现
1、分别存放在两个dat文件中,每个文件中存10个;
2、再从第一个文件中读入10个数存入第二个文件原有数据的后面。
第一个已经实现了,但是第二个读进去的时候总是乱码。。。请教。。。
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
int a[20];
int b[20];
int i;
for(i=0;i<20;i++)
cin>>a[i];
ofstream fone("f1.dat",ios::out);
ofstream ftwo("f2.dat",ios::out);
if(!fone)
{ cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<10;i++)
fone<<a[i]<<" ";
for(i=10;i<20;i++)
ftwo<<a[i]<<" ";
ifstream f3;
f3.open("f1.dat",ios::in);
for(i=0;i<10;i++)
f3>>b[i];
ofstream fthree("f1.dat",ios::out);
for(i=0;i<10;i++)
fthree<<b[i]<<" ";
return 0;
}
这是我的代码,大牛们能指导一下哪里错了吗?

据我所知,文件中数据的组织形式有ASCII文件和二进制文件两种。

用ASCII码形式输出的数据是与字符一一对应的,一个字节代表一个字符,可以直接在屏幕上显示或打印出来;

用二进制形式(内部格式)输出数值,可以节省外存空间,而且不需要转换时间,但一个字节并不对应一个字符,不能直观化显示文件中的内容。

楼主可以将数据在输入文件的同时输出到屏幕看看,如果屏幕输出没有问题,那么在文件里的数据也是没有问题的,打开文件查看是乱码也是正常的。

如果问题不是出在这里,那建议把源程序贴出来看看,可能是程序哪里写错了。

我看了程序,的确是程序错了,我将其改正如下,可以正常输出:
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
int a[20];
int b[20];
int i;
for(i=0;i<20;i++)
cin>>a[i];
ofstream fone("f1.dat",ios::out);
ofstream ftwo("f2.dat",ios::out);
if(!fone)
{ cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<10;i++)
fone<<a[i]<<" ";
for(i=10;i<20;i++)
ftwo<<a[i]<<" ";

fone.close();//关闭文件
ftwo.close();//关闭文件
ifstream f3;
f3.open("f1.dat"