putchar () 是 C 语言标准输入输出库 stdio.h 里面的基础输出函数,核心功能就是向标准输出设备也就是屏幕输出单个字符,一次调用只能打印一个字符,它本质是对字符做单字节输出,属于 C 语言入门阶段最常用的输出函数,很多初学者会把它和 printf 搞混,putchar 专门针对单个字符做精简输出,相比 printf 写法更简短,执行开销也更小。之所以设计这个独立函数,是因为早期 C 语言程序经常需要逐个输出字符,比如逐字符打印字符串,循环输出字符,单独提供 putchar 可以简化代码,不需要像 printf 那样写格式控制符,调用逻辑更直接。学习这个函数可以先记住头文件要求,掌握函数原型和返回值,再理解参数规则,然后区分它和同类输出函数的差别,最后掌握常见使用场景和易错点,就能完整掌握 putchar () 的功能。
函数基础信息
putchar () 定义在头文件 stdio.h 当中,编写代码的时候必须引入这个头文件,否则编译器会报警告甚至报错
函数原型 int putchar (int ch)
这里参数 ch 虽然写的是 int 类型,实际传入的时候可以传字符常量,字符变量,也可以传字符对应的 ASCII 码整数,函数内部会把这个数值识别成对应的字符再输出
返回值 输出成功的时候,返回刚刚输出的这个字符对应的 int 数值,如果发生输出错误,会返回 EOF 也就是宏定义的文件结束标记
核心使用规则
putchar () 每次调用只输出一个字符,想要连续打印多个字符,一般配合 for 循环多次调用 putchar
可以传入三种类型内容
字符常量 例如 putchar ('A') 屏幕输出大写 A
字符变量 例如 char c = 'b'; putchar (c);
ASCII 码整数 例如 putchar (65); 65 对应大写 A,屏幕同样输出 A
特殊控制字符也可以通过 putchar 输出,最常用的就是换行符 putchar ('\n') 实现换行效果
和同类函数对比
| 函数 | 输出能力 | 是否需要格式符 | 适用场景 |
|---|---|---|---|
| putchar | 单次仅输出单个字符 | 不需要 | 单字符输出 循环逐字符打印 |
| putc | 可指定文件流输出单个字符 | 不需要 | 文件流单字符输出 |
| printf | 支持多类型多字符格式化输出 | 需要格式控制符 | 混合数字字符串格式化打印 |
典型应用场景
逐字符遍历打印字符串,利用循环取出字符串每一个字符,每次调用 putchar 输出,相当于自己实现简易版本的字符串打印
控制台简易交互,打印单个提示字符,输出换行空格制表符这类控制符号
底层字符流处理,在简单的终端程序里面做单字符输出,代码轻量化,不需要引入复杂格式化逻辑
常见易错点
忘记添加 stdio.h 头文件,这是新手最常见错误,编译直接报错
误以为 putchar 可以一次性输出一整串文字,如果直接 putchar ("abc") 是错误写法,字符串不能直接传给 putchar
混淆返回值,很多人以为 putchar 没有返回值,实际上它返回 int 类型,写错误判断逻辑的时候可以判断返回值是否等于 EOF
参数类型误区,虽然参数是 int,不要传入超过单字节范围的数值,超出之后输出结果会不符合预期
【常见问题】
问题 1 putchar () 的功能能不能一次性输出多个字符
回答 1 putchar () 的功能本身只支持单次输出单个字符,想要输出多个字符,需要循环多次调用 putchar,不能直接传入完整字符串一次性打印。
问题 2 使用 putchar () 的功能为什么必须包含 stdio.h 头文件
回答 2 putchar () 的功能是 stdio.h 库里面声明的函数,缺少头文件编译器找不到 putchar 的函数声明,会产生编译警告或者错误,所以调用 putchar () 必须引入 stdio.h。
问题 3 putchar () 的功能和 putc 有什么本质区别
回答 3 putchar () 的功能固定输出到标准屏幕输出流,putc 可以自由指定输出文件流,二者都是单字符输出,putchar 可以理解成专门面向标准输出的简化版本 putc。
【免责申明】
本文为 C 语言 putchar 函数通用科普讲解,不同编译器版本对 putchar 的实现细节会存在细微差异,如果是嵌入式或者特殊编译环境下的 putchar,请以对应编译器官方文档为准,本文不构成专业工程开发的权威标准。


