一、案例引入与核心问题
- 关键变量定义:编号(code,字符型)、尺寸(length/width/height,浮点型)、速度(speed,整型)、乘员数(passengers,整型)。
- 两种交流方式:临时交互(键盘+显示器,不保存数据)、持久交互(内存+硬盘,保存数据)。
二、标准输入输出(键盘与显示器交互)
(一)scanf语句(数据输入)
- 功能:通过键盘向变量输入数据,语法为
scanf(格式控制字符串, 变量地址列表)。 - 核心要求:变量需加地址符
&,指针变量可直接作为参数(无需&)。 - 常用格式控制符
- 整型:
%d(有符号十进制)、%u(无符号十进制)、%o(八进制)、%x/X(十六进制)。 - 字符/字符串:
%c(单个字符)、%s(字符串)。 - 实型:
%f(小数/指数形式)、%e/E(指数形式)、%g/G(自动选最短格式)。
- 整型:
- 附加格式符:
l(长整型/双精度)、h(短整型)、域宽(指定输入宽度)、*(读入不赋值)。
(二)printf语句(数据输出)
- 功能:将变量、常量或表达式的值输出到显示器,语法为
printf(格式控制字符串, 输出数据列表)。 - 常用格式控制符:与scanf基本一致,实型
%f默认输出6位小数。 - 附加格式符:
m(指定最小输出宽度)、.n(指定小数位数/字符串截取长度)、-(左对齐)。 - 示例:输出三角形可通过
%ms(指定字符串域宽)实现对齐。
三、文件输入输出(硬盘持久化交互)
(一)文件基础概念
- 分类:文本文件(可读字符形式)、二进制文件(二进制数据形式)。
- 核心类型:
FILE(文件类型标识符),通过文件指针(FILE *fp)操作文件。
(二)文件操作基本流程
- 包含头文件:
#include <stdio.h>。 - 定义文件指针:
FILE *文件指针名。 - 打开文件:使用
fopen函数,语法为fp = fopen("文件名", "打开方式")。 - 读写操作:文本文件用
fscanf(读)、fprintf(写),用法与scanf/printf类似,多一个文件指针参数。 - 关闭文件:
fclose(文件指针),避免数据丢失或资源占用。
(三)fopen打开方式说明
| 打开方式 | 作用 | 文件不存在时的处理 |
|---|---|---|
| “r”(只读) | 读取已存在的文本文件 | 出错 |
| “w”(只写) | 输出数据到文本文件 | 创建新文件 |
| “a”(追加) | 向文件尾部添加数据 | 创建新文件 |
| “r+”(读写) | 读写已存在的文本文件 | 出错 |
| “w+”(读写) | 新建文件并读写 | 创建新文件 |
| “a+”(读写) | 读写文件,尾部追加 | 创建新文件 |
四、文件读取示例
- 核心任务:从指定文本文件读取数据并输出到显示器。
- 关键步骤:定义变量→定义文件指针→打开文件(指定路径)→
fscanf读取数据→printf输出→关闭文件。 - 示例代码逻辑:读取文件中“整数,浮点数,字符”格式数据,分别赋值给对应类型变量并输出。
五、重点与难点
(一)重点
- 标准输入输出:
scanf、printf的格式控制符使用规则。 - 文件操作:文件概念、“打开-读写-关闭”流程及
fopen、fscanf、fprintf、fclose函数用法。
(二)难点
- 输入输出缓冲区的理解。
- 文件操作函数的正确调用(路径、打开方式、指针管理)。
六、思考题
- 如何判断读取的文件是否存在,程序能否自动处理文件不存在的情况?
- 若需合并上千个文件,应设计何种解决方案?