在写C语言程序时,经常需要把一些数据“打”到屏幕上,比如计算结果、用户输入、程序状态等。这时候用得最多的,就是 printf 函数。但很多人只会写 printf("Hello World");,一旦要输出数字、小数或者拼接文字,就容易手忙脚乱。其实,C语言的格式化输出功能很强大,掌握几个关键符号,就能轻松控制输出的样子。
格式化输出的基本写法
printf 的特点是可以在字符串里留“占位符”,然后把变量填进去。最常见的占位符有:
- %d —— 输出整数
- %f —— 输出小数
- %c —— 输出单个字符
- %s —— 输出字符串
比如你想显示一个人的年龄和身高,可以这样写:
#include <stdio.h>
int main() {
int age = 25;
float height = 1.78;
printf("他今年%d岁,身高%.2f米\n", age, height);
return 0;
}
运行后会输出:他今年25岁,身高1.78米。注意这里的 %.2f,表示保留两位小数,避免出现一长串小数点后的数字,看起来更整洁。
控制宽度和对齐方式
有时候我们希望输出的内容对齐,比如做成绩单、表格之类。可以通过设置最小宽度来实现。比如 %10d 表示这个整数至少占10个字符宽,不够就在前面补空格。
printf("%-10s %5s\n", "姓名", "分数");
printf("%-10s %5d\n", "小明", 95);
printf("%-10s %5d\n", "李华", 87);
这里 %-10s 中的负号表示左对齐,不加负号就是右对齐。输出效果像这样:
姓名 分数
小明 95
李华 87
这种写法在打印简单报表时特别实用,不用借助Excel也能把信息排得整整齐齐。
进阶技巧:八进制、十六进制输出
在调试程序或处理底层数据时,经常要看数字的八进制或十六进制形式。C语言也支持直接输出:
int num = 255;
printf("十进制:%d\n", num);
printf("八进制:%o\n", num);
printf("十六进制:%x\n", num);
printf("大写十六进制:%X\n", num);
输出结果为:
十进制:255
八进制:377
十六进制:ff
大写十六进制:FF
这些在查看内存地址、颜色值、权限位时非常有用。
小心使用,避免出错
格式化输出虽然方便,但也容易翻车。最常见的问题是占位符和变量类型不匹配。比如用 %d 输出浮点数,或者变量个数和占位符数量对不上,程序可能会崩溃或打出乱码。
另一个需要注意的是字符串输出。%s 只能用于真正的字符串(以\0结尾的字符数组),不能用来输出单个字符或数字,否则可能造成程序异常。
平时写代码时,多留意编译器的警告信息,它经常会提醒你格式符是否匹配,提前发现问题比运行时报错省事得多。