【C++之文件与文件流】f1.dat 和 f2.dat 文件的读写

您所在的位置:网站首页 硬盘怎样读取数据和文件 【C++之文件与文件流】f1.dat 和 f2.dat 文件的读写

【C++之文件与文件流】f1.dat 和 f2.dat 文件的读写

2024-06-02 19:20| 来源: 网络整理| 查看: 265

题目要求

建立两个磁盘文件 f1.dat 和 f2.dat ,编程序实现以下工作: (1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件存放10个); (2)从 f1.dat 中读入10个数,然后存放到 f2.dat 文件原有数据的后面; (3)从 f2.dat 中读入20个整数,对它们按从小到大的顺序存放到 f2.dat (不保留原来的数据)。

——谭浩强的《C++面向对象程序设计》第7章习题第4小题

文件

文件是指存储在磁盘类介质上的相关数据的集合, 也称磁盘文件。

程序设计中涉及到的文件主要由两类,一类是程序文件,包括源程序文件、目标文件和可执行文件;另一类是数据文件,即程序输入输出的存储对象,涉及输入输出数据和中间结果。

根据文件中数据的表示形式,文件又分为ASCII文件和二进制文件。ASCII文件就是文本文件,每个字节表示一个字符。二进制文件是把内存中的数据、指令按其在内存中的原始格式存放在磁盘上。

文件流

在C++的I/O类库里定义了几种文件流类,专门用于文件的输入和输出操作:

ifstream类,支持从磁盘文件输入ofstream类,支持向磁盘文件输出fstream类,支持对磁盘文件输出和输出

要实现对文件进行输入输出,必须定义一个文件流类对象,用对象调用类的成员函数对文件操作,完成程序与磁盘文件之间的数据传输和交换。

对文件的操作 1.文件的打开与关闭

打开文件有两种实现方法: (1)建立文件流对象,用对象调用类成员函数open。 格式:

文件流对象.open(文件名,输入输出方式); 文件名可以包括路径,如省略路径,默认文件在当前目录(工程文件目录)。输入输出方式是在ios类中定义的枚举常量,有多种选择。 输出方式设置

(2)在定义文件流对象时指定参数(在构建流对象的同时打开对应文件) 格式:

文件流类 对象(文件名,输入输出方式); 打开文件操作可能成功也可能失败,可以测试文件流对象判定。文件流对象是真,表示成功;否则表示失败。

例如: 以写的方式打开文件 f1.dat

fstream outfile; outfile.open("f1.dat", ios::out);

或者:

fstream outfile("f1.dat", ios::out);

关闭磁盘文件

文件使用完毕,必须关闭文件,用文件流对象调用关闭文件成员函数实现。格式: 文件流对象.close();功能:解除文件流对象与磁盘文件的关联,防止文件数据被意外修改。 2.读写ASCII码文件

可以通过提取、插入运算符(>>、 int a[10]; fstream outfile1, outfile2; // 定义两个文件流对象 outfile1.open("f1.dat", ios::out); // f1.dat 和 f2.dat 均为输出文件 outfile2.open("f2.dat", ios::out); if (!outfile1) { cerr cin >> a[i]; // 输入10个数存放到 f1.dat 文件中 outfile1 int a[10]; fstream infile1, outfile2; // 定义两个文件流对象 infile1.open("f1.dat", ios::in); // f1.dat 作为输入文件 outfile2.open("f2.dat", ios::app); // f2.dat 作为输出文件,写入数据添加在文件末尾 if (!infile1) { cerr infile1 >> a[i]; // 从 f1.dat 中读入10个数 outfile2 k = i; for (j = i + 1; j min = a[k]; a[k] = a[i]; a[i] = min; } } return a[10]; } int main() { int i, j, k, min; int a[20]; fstream infile2, outfile2; // 定义文件流对象 infile2.open("f2.dat", ios::in); // f2.dat 作为输入文件 if (!infile2) { cerr cerr int i, j, k, min; for (i = 0; i if (a[j] int a[10]; fstream outfile1, outfile2; // 定义两个文件流对象 outfile1.open("f1.dat", ios::out); // f1.dat 和 f2.dat 均为输出文件 outfile2.open("f2.dat", ios::out); if (!outfile1) { cerr cin >> a[i]; // 输入10个数存放到 f1.dat 文件中 outfile1 int a[10]; fstream infile1, outfile2; // 定义两个文件流对象 infile1.open("f1.dat", ios::in); // f1.dat 作为输入文件 outfile2.open("f2.dat", ios::app); // f2.dat 作为输出文件,写入数据添加在文件末尾 if (!infile1) { cerr infile1 >> a[i]; // 从 f1.dat 中读入10个数 outfile2 cerr cerr fun1(); fun2(); fun3(); system("pause"); return 0; }

结果和运行结果3的是一样的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3