news 2026/8/13 21:05:41

printf 详解 - 你所不知道的printf用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
printf 详解 - 你所不知道的printf用法

系列文章目录

printf 详解 - 你所不知道的printf用法
scanf 详解 - 你所不知道的scanf用法
持续更新中…


文章目录

  • 系列文章目录
  • 一.printf的概念
  • 二.printf的使用
    • 1.输出字符串
      • ①直接输出字符串
      • ②直接输出字符串变量
      • ③标准输出字符串
    • 2.输出数字
      • ①常规输出
      • ②十进制输出技巧
      • ③八进制和十六进制输出技巧
  • 三.常用转义字符
  • 五.深水炸弹
    • 问题:下面这段代码的输出结果为多少
    • 解答:
  • 六.小结

一.printf的概念

定义:printf 是 (print format) 的缩写是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息

调用格式:printf("<格式化字符串>",<参量表>);

二.printf的使用

1.输出字符串

①直接输出字符串

输出格式:printf("hello world!");

printf输出字符串的方式有很多,在我们最开始学习C语言时,我们会输出"hello world!",这样的方式属于直接输出字符串。它是根据'h'的地址向后一个一个进行打印,直到遇到'\0'才会停止,而"hello world!'\0'"其实是有'\0'的,只是被隐藏了,在这里我就不细讲了,后面我会出一期字符串的相关知识进行解释。当然我们也不需要这么复杂的去这样记,这里是为第二种输出方式做铺垫的。

②直接输出字符串变量

输出格式:printf(str);

在这样输出之前我们要先做一件事情char str[] = "hello world";我们需要先创建一个存储字符串的数组。这样创建的字符串"hello world!'\0'"也是有'\0'在里面的,只是被隐藏了。在这里str所指向的是首字符h的地址,它也是通过str所指向的h的地址向后进行打印,直到遇到'\0'停止,这样的方法更为简单快捷,但我依然推荐后面要讲到的标准的输出格式。

③标准输出字符串

输出格式:printf("%s", str);

这样的输出方式依然是要char str[] = "hello world";先创建一个存储字符串的数组,然后通过这样的格式输出。这样输出能让读者这更清楚的读懂你这一步是要做什么事情,也有利于后期自己的阅读。

2.输出数字

①常规输出

在这里我们只需要先创建一个整形变量int num1 = 10;和一个浮点型变量double num2;

输出格式释义
printf("%d", num1);%d是以十进制的方式进行输出。
printf("%o", num1);%o是以八进制的方式进行输出。
printf("%x", num1);%x是以十六进制的方式进行输出。
printf("%u", num1);%u是将符号位默认为数值方式进行输出。
printf("%f", num2);%f是以浮点数的方式进行输出。

②十进制输出技巧

在这里我们只需要先创建两个整形变量int num = 10;int count = 5;

输出格式释义
printf("%2d", num);%2d它所表示占2个输出位置,数字靠右对齐,位数不足2个则在左边补空格
printf("%-2d", num);%-2d它所表示占2个输出位置,数字靠左对齐,位数不足2个则在右边补空格
printf("%*d", count, num);%*d表示占count = 5个输出位置,数字靠右对齐,位数不足5个则在左边补空格
printf("%-*d", count, num);%-*d表示占count = 5个输出位置,数字靠左对齐,位数不足5个则在右边补空格
printf("%.4d\n", num);%.4d表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充
printf("%04d\n", num);%04d表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充

③八进制和十六进制输出技巧

在这里我们只需要先创建一个整形变量int num = 10;

输出格式释义
printf("%#o\n", num);输出八进制前面的0
printf("%#x\n", num);输出十六进制前面的0x

三.常用转义字符

转义字符释义
\’用于表示字符常量’
"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字
\xdddd表示2个十六进制数字

五.深水炸弹

问题:下面这段代码的输出结果为多少

printf("%d",printf("%d",printf("%d",43)));

解答:

printf的返回值:printf函数的返回值是打印的所有字符的总数(包括转义字符)。

这道题令我印象极其深刻,我认为有必要拿出来专门讲一下。首先我们要思考printf("%d", 43)的结果为多少?至少我第一次遇到的时候毫无头绪,但我们要知道printf()是一个函数,所以我们这里我们可以创建一个变量来接收这个值。

inta=12;a=printf("%d",43);printf("\na = %d\n",a);

这里我创建了一个变量a来接收printf("%d\n", 43);的返回值,输出结果a = 2得到这个输出结果的时候我就有了一点才想,这么无厘头的值该不会是有几个数吧!当然现在我还不能确定,我于是又进行了几次尝试。

//测试:当111的输出结果inta=12;a=printf("%d",111);printf("\n%d\n",a);

在几次尝试过后我确定了printf()的返回值确实是 “数字的个数” 。最后我通过分析这道题的输出结果为4321

补充:

inta=printf("num=%d\n",43);printf("%d",a);// 结果为7

原因:里面有7个字符(包括转义字符,%d被43所代替,视为两个字符)。

六.小结

正是因为这样一道题,我认为我有必要对于每个函数的特性进一步的学习和研究,所以也从这篇博客开始,我将持续更新C语言标准库函数的函数详解,如果我的内容中出现错误也很乐意接受批评指点,希望每个看到我博客的人都能从中有所收获,而非无功而返,当然我会回再接再厉继续更新更为优质的博客与大家一起分享一起进步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 21:05:16

网站建设公司生存:在红海厮杀中找路的那些事儿,真相有点扎心

做网站建设这行,有时候真挺像是在暴风雨里撑船。外面浪大,里面漏水,船员们累得半死,还得笑着对客户说:“放心,我们稳得很。”这几年,整个行业的风向变得快得让人咋舌。前几年,稍微懂点HTML和PHP,就能在大街上摆摊说能建站;后来WordPress和各类模板建站工具泛滥,价格…

作者头像 李华
网站建设 2026/8/13 21:05:05

在自己的电脑建设空间网站:从0到1打造你的个人数字家园全指南

在这个数据如洪水般涌来的时代,我们每个人每天都在云端留下了无数的足迹。照片、文档、代码、博客,这些数字资产就像我们的记忆碎片,散落在各大社交平台和云存储服务商的服务器上。很多时候,我们享受这种便利,却忽略了一个可怕的事实:这些并不完全属于你。一旦平台封号、…

作者头像 李华
网站建设 2026/8/13 21:04:45

中国建设银行官网站一站式攻略:如何安全便捷地办理个人及对公业务,避坑指南与实用技巧全解析

在这个数字化浪潮席卷全球的今天,银行业的变革速度简直让人目不暇接。想当年,咱们去银行办业务,那真的是“排队两小时,办事五分钟”,还得特意挑个工作日的下午,避开早高峰和午饭时间,稍不留神就可能被叫号机搞得晕头转向。现在呢?智能手机普及了,各大银行APP也都做得花…

作者头像 李华
网站建设 2026/8/13 21:04:18

DTLS、ICE--用janus举例

参考文章&#xff1a;详解 WebRTC 传输安全机制&#xff1a;一文读懂 DTLS 协议 - 知乎 一 DTLS&#xff1a;udp上的tls&#xff0c;传输音视频用的&#xff0c;用的libsrtp库。 SRTP&#xff1a;rtp头没有加密&#xff0c;payload加密了。 asetup:active&#xff1a;作为DTL…

作者头像 李华
网站建设 2026/8/13 21:04:14

OpCore-Simplify:30分钟搞定黑苹果配置的智能神器

OpCore-Simplify&#xff1a;30分钟搞定黑苹果配置的智能神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置头疼吗&#xff…

作者头像 李华
网站建设 2026/8/13 21:04:11

长沙营销型网站建设公司:如何避坑指南与流量转化秘籍

在这个数字化飞速发展的时代,做生意的逻辑早就变了。以前大家觉得开个店、挂个招牌、守株待兔就能赚钱,现在不行了。现在的客户,还没走进你的实体店之前,已经在手机上搜过你好几遍了。如果你的网站长得像二十年前的产物,打开速度像树懒在散步,用户点进去三秒钟还看不明白…

作者头像 李华