深入printf

news2025/1/16 16:44:18

目录

printf的定义

printf的使用

函数说明

说明符(specifier)

flags(标志)

width(最小宽度)

.precision(精度)

length(类型长度)

转义序列 


printf的定义

printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>printf 函数的一般调用格式为:printf("<格式化字符串>", <参量表>) 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义 。

printf的使用

printf("%[flags][width][.precision][length]specifier");
  //即:%[标志][最小宽度][.精度][类型长度]说明符

函数说明

format 转换说明组成是%[flags][width][.precision][length]specifier

说明符(specifier)

说明符(specifier)用于规定输出数据的类型,下面列举部分常用的说明符

打印的数据类型说明符(specifier)描述
int

%o

%d

%x

october 八进制整数

decimal 十进制整数

hex       十六进制整数

unsigned int%uunsigned 无符号整数
char%ccharator 字符
字符串%sstring  字符串
short%dshort decimal 短整型(short int)
unsigned short%uunsigned short 无符号短整型
long%ldlong decimal 长整型(long int)
unsigned long%uunsigned long 无符号长整型
float%ffloat 单精度浮点数
double%lflong float 双精度浮点数

 代码示例及运行结果:

flags(标志)

标志(flags)用于规定输出样式

-

减号

在给定的字段宽度内左对齐,右边填充空格(默认右对齐)

+

加号

强制在结果之前显示加号或减号(+ 或 -),即正数前面会显示 + 号;

默认情况下,只有负数前面会显示一个 - 号

(空格)

空格

输出值为正时加上空格,为负时加上负号 [3] 

#

井号

specifier 是无符号八进制或无符号十六进制时,增加前缀 0、0x;

specifier 是 浮点数时,一定使用小数点;

specifier 是double时,尾部的 0 保留

0

数字零

对于所有的数字格式,使用前导零填充字段宽度(如果出现了减号标志或者指定了精度,则忽略该标志)

 代码示例及运行结果:

width(最小宽度)

最小宽度(width)用于控制显示字段的宽度

注意:字段宽度的最小值,如果输出的字段长度小于该数,结果会用前导空格填充;如果输出的字段长度大于该数,结果使用更宽的字段,不会截断输出

 

.precision(精度)

精度(.precision)用于指定输出精度

length(类型长度)

length(类型长度)

描述

h

参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 X)

l

参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串) 

 代码示例及运行结果:

转义序列 

转义序列在字符串中会被自动转换为相应的特殊字符。printf() 使用的常见转义字符如下:

转义序列描述
\'单引号
\"双引号
\?问号
\\反斜杠
\a铃声(提醒)
\b退格
\f换页
\n换行
\r回车
\t水平制表符

 补充:

\dddddd表示1-3个八进制的数字。如:\130
\xdddd表示2个16进制的数字。如:\x30

请问:printf("c:\test\32\test.c");能正常输出吗?为什么?

显然不能,应为\t,\32会进行转义,结果如下

请问:printf("%d\n",strlen("c:\test\32\test.c"));长度为多少?是如何求得的?

如上图所示结果为13

 

 \32 满足\ddd 是八进制数字,我们将它转换成十进制3*8+2*1=26,更具ASCII表可以查到其对应的字符为“—>”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/557312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux(软硬链接)

目录&#xff1a; 1.软连接 2.硬链接 ----------------------------------------------------------------------------------------------------------------------------- 1.软连接 linux当中有两个概念&#xff0c;一个是软连接&#xff0c;一个是硬链接&#xff0c;在学习…

Golang每日一练(leetDay0074) 词典类设计、单词搜索II

目录 211. 添加与搜索单词 - 数据结构设计 Design-add-and-search-words-data-structure &#x1f31f;&#x1f31f; 212. 单词搜索 II Word Search ii &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golan…

基于C#和Blazor开发的前后端分离框架

Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 开源地址 https://gitee.com/known/Known 开发环境 .NET 7VS2022 概述 基于C#和Blazor实现的快速开发框架&#xff0c;前后端分离…

【深度学习】- 作业4: 脑部MRI(核磁共振)图像分别

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

【数据结构与算法】- 周测四

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

三、尚医通医院管理实现

文章目录 三、医院管理实现1、医院列表1.1 医院列表api接口1.1.1 添加service分页接口与实现1.1.2 添加controller方法 1.2 service-cmn模块提供接口1.2.1添加service接口与实现1.2.2添加controller方法 1.3封装Feign服务调用1.3.1搭建service-client父模块1.3.2 搭建service-c…

微生物实验之分菌(细菌)

文章目录 1. 采集实验样本2. 对实验样本进行处理1. 土壤样本的处理2. 植物内生菌样本的处理 3. 接种4. 分离纯化5. 测16s6. 测全基因组7. 保藏菌株 分离细菌菌株 (分菌) 是微生物学实验中&#xff0c;很重要的一环&#xff0c;对于微生物资源来说尤为重要。分菌主要包含以下几个…

人工智能CNN 卷积神经网络结构(tensorflow代码实现)

MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 通过上期的分享,我们了解了手写数字识别的基本原理以及CNN卷积神经网络的基本原理,本期我们结合MNIST数据集,来用代码来实现CNN。(手写数字识别是TensorFlow人工智能最基础的案例,这个跟学习编程…

删除表单(form)元素中的某一个数据项操作实现

问题 对于表单&#xff08;form&#xff09;元素&#xff0c;只支持POST请求。若是需要删除表单&#xff08;form&#xff09;元素中的某一个数据项&#xff0c;最为严谨的方式是采用POST请求&#xff0c; 对于表单元素&#xff0c;如何转换为DELETE请求 详细问题 对于表单元…

AC规则-2

基于RAM的远程接口 安全元件的访问规则可以通过远程应用程序管理 (RAM) 更新命令进行管理。 因此&#xff0c;ARA-M 和 ARA-C 各自提供一个远程接口&#xff0c;允许在 ARA 中存储或删除访问规则。 访问控制数据的任何远程管理都应仅通过 [GP 卡规范] 定义的安全通道协议来完成…

『树莓派云台机器人』01. 使用手机控制机器人

目录 1. 检查是否已经开机&#xff0c;连接机器人wifi2. 安装树莓派控制app应用&#xff0c;直连模式连接机器人3. 机器人功能实现总结 欢迎关注 『树莓派云台机器人』 博客&#xff0c;持续更新中 欢迎关注 『树莓派云台机器人』 博客&#xff0c;持续更新中 动手组装等步骤请…

chatgpt赋能Python-python_erode

Python Erode&#xff1a;用Python实现图像腐蚀 图像处理是人工智能领域的重要分支&#xff0c;Python是一种广泛应用于机器学习和深度学习的编程语言&#xff0c;也是图像处理领域的主要开发语言之一。在Python中&#xff0c;我们可以使用许多不同的库和工具来处理图像。其中…

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-9

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-9 虚拟机类加载机制类加载的过程准备解析字段解析 方法解析接口方法解析 虚拟机类加载机制 类加载的过程 准备 准备阶段是正式为类中定义的变量&#xff08;即静态变量&#xff0c;被static修饰的变量&#xff09…

检测字符串中所有的字母是否都为大写(字符中的数字、符号和空格不起作用)isupper()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 检测字符串中所有的字母是否都为大写 &#xff08;字符中的数字、符号和空格不起作用&#xff09; isupper() 选择题 以下程序的运行结果是? print("【执行】print(PYTHON.isupper())&qu…

chatgpt赋能Python-python_endif

Python Endif: 程序员必备的关键字 如果你是一位有经验的Python程序员&#xff0c;那么你一定非常熟悉Python中的一个关键字&#xff1a;Endif。本文将深入介绍Endif&#xff0c;帮助程序员更好地理解其作用和用法。 什么是Endif Endif是Python中的一个关键字&#xff0c;它…

【自然语言处理】- 作业5: 智能问答在法律智能领域的应用

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

Java如何连接数据库

Java连接MySQL数据库的方法&#xff1a;首先下载解压得到jar库文件&#xff0c;并在对应的项目中导入该库文件;然后添加JDBC;接着在Mysql数据库中进行建表&#xff0c;和添加数据的操作;最后连接数据库并读取数据即可。 Java 连接 MySQL数据库需要驱动包&#xff0c;解压后得到…

springboot国际化多语言配置

文章目录 概要springboot项目为例1 新建路径/文件2 新建两个配置类 搞一个控制器测试总结 概要 项目中有时候会用到多语言的业务场景; 一般来说都是通过后端实现的,将先有内容替换为适用的环境语言; springboot项目为例 1 新建路径/文件 新建路径static/i18n新建文件: mess…

【数据结构与算法】- 周测二

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

简单易懂:Ajax入门实例详解(登录功能)

前言&#xff1a;不积跬步无以至千里&#xff0c;不积小流无以成江河&#xff01; 废话不多&#xff0c;以最简练的语言和实例初步了解Ajax&#xff01; 一、Ajax简介 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种基于Web技术的编程实现方式&#xff0c…