第 3 讲:与计算机面对面地交流

一、案例引入与核心问题

  • 关键变量定义:编号(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)操作文件。

(二)文件操作基本流程

  1. 包含头文件:#include <stdio.h>
  2. 定义文件指针:FILE *文件指针名
  3. 打开文件:使用fopen函数,语法为fp = fopen("文件名", "打开方式")
  4. 读写操作:文本文件用fscanf(读)、fprintf(写),用法与scanf/printf类似,多一个文件指针参数。
  5. 关闭文件:fclose(文件指针),避免数据丢失或资源占用。

(三)fopen打开方式说明

打开方式 作用 文件不存在时的处理
“r”(只读) 读取已存在的文本文件 出错
“w”(只写) 输出数据到文本文件 创建新文件
“a”(追加) 向文件尾部添加数据 创建新文件
“r+”(读写) 读写已存在的文本文件 出错
“w+”(读写) 新建文件并读写 创建新文件
“a+”(读写) 读写文件,尾部追加 创建新文件

四、文件读取示例

  • 核心任务:从指定文本文件读取数据并输出到显示器。
  • 关键步骤:定义变量→定义文件指针→打开文件(指定路径)→fscanf读取数据→printf输出→关闭文件。
  • 示例代码逻辑:读取文件中“整数,浮点数,字符”格式数据,分别赋值给对应类型变量并输出。

五、重点与难点

(一)重点

  • 标准输入输出:scanfprintf的格式控制符使用规则。
  • 文件操作:文件概念、“打开-读写-关闭”流程及fopenfscanffprintffclose函数用法。

(二)难点

  • 输入输出缓冲区的理解。
  • 文件操作函数的正确调用(路径、打开方式、指针管理)。

六、思考题

  1. 如何判断读取的文件是否存在,程序能否自动处理文件不存在的情况?
  2. 若需合并上千个文件,应设计何种解决方案?