面对C语言众多的输入输出函数,死记硬背确实很痛苦,而且容易混淆。其实,这些函数的命名非常有逻辑,掌握“分类记忆法”和“词根联想法”,你不仅能记住它们,还能一眼看出它们的功能。
1. 核心词根记忆法(掌握规律)
C语言的标准库函数命名通常遵循 “动词 + 对象” 或 “功能缩写” 的规则。只要记住几个核心词根,就能举一反三:
- f = File(文件):带有
f的函数通常用于文件操作,或者可以指定输出/输入的目标(流)。 - s = String(字符串):带有
s的函数通常专门处理字符串。 - char = Character(字符):用于单个字符的处理。
- scan = 扫描(输入):从外部“扫描”进内存。
- print = 打印(输出):从内存“打印”到屏幕。
- get = 获取(输入):拿取数据。
- put = 放置(输出):放置数据。
2. 分类对比记忆表
我将常用的输入输出函数分为三类,你可以对比着记:
📊 格式化输入输出(最常用,功能最强)
这是C语言的“主力军”,用于处理各种数据类型(整数、浮点数、字符等)。
表格
| 函数名 | 记忆口诀 | 核心功能 | 典型场景 |
|---|---|---|---|
| printf | Print + Format | 格式化输出 | 屏幕打印,需要控制格式(如保留小数)。 |
| scanf | Scan + Format | 格式化输入 | 键盘读取,需要指定类型(如 %d)。 |
| fprintf | File + Print | 文件格式化输出 | 将数据按格式写入文件。 |
| fscanf | File + Scan | 文件格式化输入 | 从文件按格式读取数据。 |
🔤 字符串与行处理(处理整行文字)
当你需要读取包含空格的整句话,或者单纯输出一行字时使用。
表格
| 函数名 | 记忆口诀 | 核心功能 | 注意事项 |
|---|---|---|---|
| puts | Put + String | 输出字符串并换行 | 比 printf 简单,自动加换行符。 |
| gets | Get + String | 读取整行字符串 | 已弃用(不安全),容易缓冲区溢出,建议用 fgets。 |
| fgets | File + Get + String | 安全读取字符串 | 可以指定读取长度,防止溢出,既可用于文件也可用于键盘。 |
🔣 单字符处理(最基础,效率高)
处理单个字符,通常用于底层操作或简单的菜单选择。
表格
| 函数名 | 记忆口诀 | 核心功能 | 典型场景 |
|---|---|---|---|
| putchar | Put + Char | 输出单个字符 | 逐个字符打印,效率比 printf 高。 |
| getchar | Get + Char | 读取单个字符 | 读取一个按键,常用于“按任意键继续”。 |
| getc | Get + Char | 从文件读字符 | getchar 的文件版,从指定流读取。 |
| putc | Put + Char | 向文件写字符 | putchar 的文件版,向指定流写入。 |
3. 深度理解:为什么需要这么多函数?
理解它们存在的原因,比记住名字更重要:
- printf/scanf 虽然万能,但速度慢,且处理复杂。
- putchar/getchar 速度极快,但只能处理一个字。
- puts/gets 处理字符串方便,但
gets不安全。 - f 开头的函数(如
fprintf)是为了通用性,它们不仅能在屏幕用,还能指定输出到文件或网络端口。
4. 避坑指南(重点记忆)
在记忆和使用这些函数时,有几个初学者常犯的错误,请务必注意:
scanf的取地址符&:- 除了字符串数组名(如
scanf("%s", str))外,读取基本数据类型(int,float,char)时,必须加&(例如scanf("%d", &num)),否则会导致程序崩溃。
- 除了字符串数组名(如
gets的危险性:- 永远不要在新代码中使用
gets,因为它不检查缓冲区长度。请习惯使用fgets代替。
- 永远不要在新代码中使用
- 换行符的陷阱:
scanf读取数字后,回车键留下的换行符\n会残留在缓冲区。如果紧接着用getchar()或%c读取字符,会直接读走这个换行符。解决方法是在%c前加一个空格(" %c")来跳过空白字符。

1万+

被折叠的 条评论
为什么被折叠?



