c语言建立两个磁盘文件,建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作...

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++程序设计。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值