1)从键盘输入20个整数,分别存放在两个磁盘文件中,每个文件中放10个整数
2)从f1.dat读入10个数,然后存放在f2.dat文件原有数据后面
3)从f2.dat中读入20个整数,对它们进行从小到大的顺序存放在f2.dat中(不保留原来的数据)
#include
#include
#include
using namespace std;
//fun1函数从键盘输入20个整数,分别存放在两个磁盘文件中
void fun1()
{
int a[10];
ofstream outfile1("f1.dat"),outfile2("f2.dat"); //分别建立两个文件流对象
if(!outfile1)
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
if(!outfile2)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "enter 10 integer numbers:" << endl;
for (int i=0;i<10;i++) //输入10个数存放在f1.dat文件中
{
cin >> a[i];
outfile1 << a[i] << " ";
}
cout << "enter 10 integer numbers:" << endl;
for (int i=0;i<10;i++) //输入10个数存放在f2.dat文件中
{
cin >> a[i];
outfile2 << a[i] << " ";
}
outfile1.close();
outfile2.close();
}
//从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面
void fun2()
{
ifstream infile("f1.dat"); //f1.dat作为输入文件
if(!infile)
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
ofstream outfile("f2.dat",ios::app); //f2.dat作为输出文件,文件指针指向文件尾,向它写入的数据放在原来数据的后面
if (!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a;
for (int i=0;i<10;i++)
{
infile >> a; //从磁盘文件f2.dat读入一个整数
outfile << a << " "; //将该读数存放到f2.dat中
}
infile.close();
outfile.close();
}
//从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat中
void fun3()
{
ifstream infile("f2.dat");
if(!infile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a[20];
int i,j,t;
for (i=0;i<20;i++)
infile >> a[i];
for (i=0;i<19;i++) //冒泡法
for (j=0;j<19-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
infile.close();
ofstream outfile("f2.dat",ios::out);
//f2.dat作为输出文件,文件中原有内容删除
if(!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "data in f2.dat:" << endl;
for (i=0;i<20;i++)
{
outfile << a[i] << " ";
cout << a[i] << " ";
}
cout << endl;
outfile.close();
}
int main()
{
fun1();
fun2();
fun3();
cout << "Hello world!" << endl;
return 0;
}
在Code::Blocks运行,参考谭浩强C++程序设计。