08 c++程序设计--文件操作

这一节是华东师范大学潘建瑜所讲授的c++程序设计中的文件操作部分。主要内容有:C++ 基本输入输出 C 语言格式化输出 C 语言文件读写。首先给我们讲了I/O的基本概念,输入输出操作以及操作符。然后向我们介绍了C语言的格式化输出,最后讲述了文件的读写的语句。
展开查看详情

1.第七讲 文件操作 —— C++ 基本 输入输出 —— C 语言格式化 输出 —— C 语言文件读写

2.2 C++ 基本输入输出

3.3 I / O 基本概念 C++ 本身没有输入输出语句。 C++ 中的输入输出是通过相应的 I/O 流类库 实现的 数据流 提取(读):从流对象中获取数据,运算符 为 " >> " 插入(写):向流对象中添加数据,运算符 为 " << " 将数据从一个对象到另一个对象的流动抽象为 “流” 提取和插入运算符是所有标准 C++ 数据类型预先设计的 插入运算符与 操纵符 一起使用,可以控制输出格式

4.4 输入输出操作 cin : 标准输入(键盘等) cout : 标准输出(屏幕、打印机等) cerr : 标准错误输出,没有缓冲,立即被输出 clog : 与 cerr 类似,但有缓冲,缓冲区满时被输出 头文件 iostream 中预定义的四个输入输出对象 操纵符 用于控制数据的输出格式 两种途径: iomanip 头文件 和 ios_base 类

5.5 操纵符 操纵符 含义 endl 插入换行符,并刷新流 setw(n) cout.width(n) 设置域宽 setfill( 字符 ) cout.fill( 字符 ) 设置填充 left / right 对齐方式(左对齐 / 右对齐 ) ,缺省右对齐 fixed 使用定点方式输出 scientific 使用指数形式 setprecision (n) 设置输出的有效数字个数;若在 fixed 或 scientific 后使用,则设置小数位数 showpoint 显示小数点及尾随零,即使没有小数部分 需加入头文件 iomanip

6.6 操纵符(宽度) 设置宽度: setw( 宽度 ) 或 cout.width( 宽度 ) int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; for (int i=0; i<3; i++) { for (int j=0; j<3; j++) cout << setw(4) << A[i][j]; // 设置输出宽度 cout << "

7.7 操纵符(填充符) 设置填充符: setfill( 字符 ) 或 cout.fill( 字符 ) int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; // cout.fill (*); // 设置填充符 cout << setfill (*); // 设置填充符 for ( int i =0; i <3; i ++) { for ( int j=0; j<3; j++ ) cout << setw (4) << A[ i ][j]; // 设置输出宽度 cout << "

8.8 操纵符(对齐方式) 设置左对齐: left / right int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; cout << left; // 设置左对齐 for (int i=0; i<3; i++) { for (int j=0; j<3; j++) cout << setw(4) << A[i][j]; cout << "

9.9 操纵符(输出格式) 以定点格式显示数值: fixed cout << fixed; // 定点格式 for (int i=0; i<3; i++) cout << a[i]; 以科学计数法(指数形式)显示数值: scientific double a[3]={2.7182818, 31.416, 987000}; cout << scientific; // 以指数形式输出 for (int i=0; i<3; i++) cout << a[i]; ex07_fixed_scientific.cpp

10.10 操纵符(精度) 设置输出精度: setprecision double a[3]={2.7182818, 31.416, 987000}; for (int i=0; i<3; i++) cout << setprecision(3) << a[i]; 缺省精度为小数点后 6 位 ex07_setprecision.cpp

11.11 操纵符等价用法 left setiosflags(ios::left) right setiosflags(ios::right) fixed setiosflags(ios::fixed) scientific setiosflags(ios::scientific) 更多操作符参见头文件 iomanip

12.12 C 语言格式化 输出 —— printf 语句

13.13 C 语言输出 C 语言的输出函数: printf 格式控制字符串: 普通字符串 、 格式字符串 、 转义字符 printf ( “ 格式控制字符串 ” ,输出变量列表 ); 格式字符串 :以 % 开头,后面跟各种 格式说明符 int k=5; double a=3.14; printf( “k=%d, a=%f

14.14 格式字符串 % [flag][ 输出最小宽度 ][. 精度 ] 格式说明符 printf ("pi= % - 12 . 6 f

15.15 格式说明符与转义字符 常见的格式说明符 c 字符型 g 浮点数(自动) d 十进制整数 o 八进制 e 浮点数(科学计数法) s 字符串 f 浮点数(小数形式) x/X 十六进制 常见转义字符(输出 特殊 符号)  退后一格 水平制表符 换页 \ 反斜杠

16.16 C 语言文件读写 文件读写基本步骤 : 打开 文件、读取或写入、关闭 文件

17.17 文件读写 文件的分类 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 按数据的组织形式: 文本文件 : ASCII 文件,每个字节存放一个字符的 ASCII 码 二进制文件 :数据按其在内存中的存储形式原样存放

18.18 C 语言文件读写 文件指针 FILE *pf; 文件打开 pf=fopen( 文件名,打开方式 ); 文件名:普通字符串 打开方式:读、写、文本文件、二进制文件 rt 、 wt 、 at 、 rb 、 wb 、 ab 、 rt+ 、 wt+ 、 at+ 、 rb+ 、 wb+ 、 ab+ (r 为读, w 为写, + 为读写, t 为文本, b 为二进制) 注:若文件打开成功,返回指向文件的指针; 若 打开失败,则返回一个空指针 (NULL)

19.19 fopen / fclose FILE *pf; pf=fopen( "out1.txt","wt" ); if (pf==NULL) { printf("ERROR: Can not open the file!

20.20 文本文件 写文本文件 fprintf(pf, " 格式控制字符串 " ,输出变量列表 ); 用法与 printf 类似 FILE *pf; pf=fopen( "out1.txt","wt" ); double pi=3.1415926; fprintf(pf,"pi=%-12.6f

21.21 二进制文件 写二进制文件 fwrite(buffer, size , count , pf); 读二进制文件 fread(buffer, size , count , pf); 将 count 个长度为 size 的连续数据写入到 pf 指向的文件中, buffer 是这些数据的首地址(可以是指针或数组名) 从 pf 指向的文件中读取 count 个长度为 size 的连续数据, buffer 是存放这些数据的首地址(可以是指针或数组名)

22.22 二进制文件 int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; FILE *pf; pf= fopen(" data 1. dat "," w b "); fwrite(A,sizeof(int),9,pf); fclose(pf); int B[3][3]; pf= fopen(" data 1. dat "," rb "); fread(B,sizeof(int),9,pf); fclose(pf); fwrite(A,sizeof(A),1,pf); ex07_fwrite_fread.cpp