当前位置: 首页 > news >正文

C语言的格式化输出 printf

最近在看一些新手写的代码,发现大家在最基本的printf上经常出状况。这玩意虽然是入门第一课就会见到的函数,但它的参数设计其实挺别扭的。今天把printf的使用细节和几个极其容易让人抓狂的坑顺一遍。


怎么理解这玩意?

在 C 语言里,我们想在控制台看数据,基本上全靠printf。那个字母f代表 formatted(格式化)。因为 C 语言没有其他高级语言那种用加号拼接字符串的便利设计,我们要输出稍微复杂点的内容,就得用它来“拼图”。

它的调用方式是这样的:printf("一个带占位符的模板", 变量列表);

简单来说,你先在双引号里写好你要输出的格式,在需要填入数据的地方放一个百分号%开头的字符(占位符)占个坑,然后在双引号后面,按顺序把变量传进去填坑。

初学时别去背那些密密麻麻的格式表,记住这四个最常用的就足够了:

  • %d:对应整数(int)。
  • %f:对应小数(floatdouble)。如果不加控制,它默认会输出六位小数。通常我们会写成%.2f(保留两位小数)或%.1f(保留一位)。
  • %c:对应单个字符(char)。
  • %s:对应字符串(也就是一串字符)。

另外,双引号里还可以放排版控制符,比如\n代表换行,\t代表水平制表符(相当于按了一下 Tab 键)。要是漏了\n,控制台打印出来的字就会全部黏在一起,看起来非常业余。


上代码看看

我们用一个买奶茶的账单例子,来看看怎么格式化输出:

#include <stdio.h> int main() { int cups = 2; // 买了2杯 double price = 16.5; // 单价16.5元 char size = 'L'; // 大杯 // 打印标题行,用 \t 控制间距对齐 printf("品名\t数量\t单价\t规格\n"); // 填坑打印数据,注意顺序要和占位符严格一致 printf("奶茶\t%d\t%.1f\t%c\n", cups, price, size); printf("账单状态:%s\n", "已结算"); return 0; }
代码逐行拆解:
  • printf("品名\t数量\t单价\t规格\n");: 打印完每个词后插入\t,大厨(系统)会自动空出合适的空格,这样下一行的数据就能跟它对齐。
  • printf("奶茶\t%d\t%.1f\t%c\n", cups, price, size);: 这一行挖了三个坑。后面的cups填入%dprice填入%.1fsize填入%c。顺序要是错了,输出结果就会完全乱套。

两个容易卡住的坑

新手用printf,十个有九个会卡在下面这两个问题上:

踩坑注意:类型匹配写错,或者在变量名前面误加了取地址符&

错误代码示范:
#include <stdio.h> int main() { int num = 100; double val = 12.34; // 错误 1:打印变量时加了 & 符号 printf("数值是:%d\n", &num); // 错误 2:用 %d 占位符去打印 double 类型的小数 printf("小数是:%d\n", val); return 0; }
怎么修正:

对于第一个错误,printf只需要拿到num盒子里装的值(100),但你加了&,传过去的就变成了num在内存里的物理地址。结果屏幕上会打印出一长串莫名其妙的超级大数字。修正方法是直接写num,不要加&

对于第二个错误,val是 8 字节的 double 小数,但你却用只读取 4 字节的%d去解析它。由于内存读取宽度对不上,计算机解析出来的值通常会直接显示为0或者其他垃圾数值。修正方法是把%d改为%f%.2f


留个小练习

动手写几行代码测试一下。

  • 挑战题目: 编写一个 C 程序,声明并初始化三个变量:品名(字符串,如 "可乐")、数量(整型,如 3)、价格(浮点型,如 3.5)。只使用一个printf语句,在控制台屏幕上输出以下三行信息,且确保数据在纵向排列上完全对齐:

    品名 数量 价格 可乐 3 3.50 薯片 1 7.50

参考答案与思路:

我们可以把所有文字和数据合并在一个printf语句里,中间利用\t控制缩进,行尾用\n控制换行。因为浮点数默认输出 6 位小数,所以价格占位符要用%.2f

#include <stdio.h> int main() { // 单个 printf 打印三行规整表格 printf("品名\t数量\t价格\n可乐\t%d\t%.2f\n薯片\t%d\t%.2f\n", 3, 3.50, 1, 7.50); return 0; }

跑一下代码,看看输出的表格是不是非常规整。

http://www.jsqmd.com/news/978035/

相关文章:

  • 不惧和谐,永不失效!!
  • OpenClaw一键部署:5分钟玩转AI办公神器
  • 手表维修配件价格多少钱? - myqiye
  • Reloaded-II终极指南:5步快速掌握游戏Mod加载器,告别依赖冲突和手动注入烦恼
  • C语言中的递归
  • 如何3分钟掌握Windows屏幕实时翻译神器:Translumo终极指南
  • ComfyUi 5070Ti显卡视频生成指南
  • COM3D2 MaidFiddler终极指南:免费实时游戏编辑器完整教程
  • Krita AI Diffusion项目解决SD3模型CLIP文件缺失问题的完整指南
  • 小程序毕业设计-基于springboot的旅游线路定制微信小程序基于springboot+微信小程序的旅游线路定制微信小程序(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 告别鼠标手!Kicad PCB设计效率翻倍的10个隐藏快捷键(附实战演示)
  • 意图共鸣科技《AI记忆链商业化白皮书3.0》学习笔记:“AI焦虑的解药”=第二大脑+记忆主权
  • RNOH x HarmonyOS Core Speech Kit TTS:商品卖点语音播报真机实践
  • FlicFlac:Windows音频格式转换的神器,一拖一按完成无损转换
  • 机器学习数据缺失值处理全攻略
  • 零基础搭建本地 AI,OpenClaw Windows/macOS 落地实操
  • 大模型时代,小白也能入行!2026年AI岗必看指南,高薪收藏版
  • Samsung K4T1G164QE-HCE7引脚功能与封装:DDR2 SDRAM内存颗粒数据手册
  • 2026年去毛刺打磨机排名,佛山龙砺智能名列前茅 - myqiye
  • 2026q2南充选装修公司:南充哪家装修公司口碑好/南充房屋装修/南充整装装修/从技术维度看口碑真相 - 优质品牌商家
  • 终极音乐解放指南:如何使用qmc-decoder高效解密QQ音乐加密文件
  • BGP选路原则--下一跳IGP Metric小的(8)
  • 2026年马来西亚公司注册服务TOP5机构排行及选购推荐 - 优质品牌商家
  • 考研数学资料怎么选|数一数二数三|资料已整理
  • 赤火时代的钛合金水淬炉好用吗? - myqiye
  • 选购玩具面料,安鹏纺织是您的不二之选 - myqiye
  • 修改liunx最大句柄数
  • Stable Baselines3:强化学习入门者的终极实战指南
  • 杭州大润发购物卡回收时效解析:技术流程与平台选择 - 优质品牌商家
  • 【环形缓冲区】1-概念与编程