用C++编写一个程序:1、建立两个文件file1.dat,file2.dat。 2、从键盘输入20个随机数,将数存入到file1.dat中。 3、从file1.dat中读取前10个数,并按照从小到大的顺序存入到file2.dat中(不保留原有内容) 4、从file2.dat中读出数据并显示
时间: 2024-03-17 09:44:03 浏览: 192
判断二进制文件是否读到文件尾?-C++程序设计
好的,这是用C++语言的实现代码:
```cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
// 定义常量
const int SIZE = 20;
const int SIZE1 = 10;
// 定义排序函数
void sort(int a[], int n);
int main()
{
int i, num[SIZE], read_num[SIZE1];
ofstream fout1("file1.dat", ios::out | ios::binary);
ifstream fin1("file1.dat", ios::in | ios::binary);
ofstream fout2("file2.dat", ios::out | ios::binary);
ifstream fin2("file2.dat", ios::in | ios::binary);
// 检查文件是否成功打开
if (!fout1 || !fin1 || !fout2 || !fin2)
{
cout << "无法打开文件!" << endl;
exit(1);
}
// 从键盘输入20个随机数,将数存入到 file1.dat 中
cout << "请输入20个随机数:" << endl;
for (i = 0; i < SIZE; i++)
{
cin >> num[i];
fout1.write(reinterpret_cast<char*>(&num[i]), sizeof(int));
}
// 定位文件指针到 file1.dat 的开头
fin1.seekg(0, ios::beg);
// 从 file1.dat 中读取前10个数,并按照从小到大的顺序存入到 file2.dat 中
for (i = 0; i < SIZE1; i++)
{
fin1.read(reinterpret_cast<char*>(&read_num[i]), sizeof(int));
}
sort(read_num, SIZE1);
// 清空 file2.dat 文件
fout2.close();
fout2.open("file2.dat", ios::out | ios::binary);
// 将排序后的前10个数存入到 file2.dat 中
for (i = 0; i < SIZE1; i++)
{
fout2.write(reinterpret_cast<char*>(&read_num[i]), sizeof(int));
}
// 定位文件指针到 file2.dat 的开头
fin2.seekg(0, ios::beg);
// 从 file2.dat 中读出数据并显示
cout << "\nfile2.dat 中的数据为:" << endl;
for (i = 0; i < SIZE1; i++)
{
fin2.read(reinterpret_cast<char*>(&read_num[i]), sizeof(int));
cout << read_num[i] << " ";
}
// 关闭文件
fout1.close();
fin1.close();
fout2.close();
fin2.close();
return 0;
}
// 排序函数
void sort(int a[], int n)
{
sort(a, a + n);
}
```
这个程序会在当前目录下生成 `file1.dat` 和 `file2.dat` 两个文件,并且按照从小到大的顺序将 `file1.dat` 中前10个数存入到 `file2.dat` 中。最后从 `file2.dat` 中读出数据并显示。
阅读全文