【C语言】/*printf 函数*/

目录

printf 函数

1.1 语法形式

1.2 基本使用

1.3 占位符

1.4 占位符的输出格式

1.4.1 限定宽度

1.4.2 总是显⽰正负号

1.4.3 限定⼩数位数

1.4.4 输出部分字符串


printf 函数

1.1 语法形式

语法形式:int printf(const char* format, ...);

功能:将格式化的数据打印到 stdout (标准输出流)中。

返回结果:如果写入成功,返回写入的字符总数;如果写入错误,则设置错误指示符 ferror 并返回负数,如果写入宽字符时发生多字节字符编码错误,则 errno 设置为 EILSEQ 并返回负数

所需包含的头文件:<stdio.h>

1.2 基本使用

1. printf 中的 f 代表 format (格式化),表示可以定制输出文本的格式。

2. printf 函数不会在行尾自动添加换行符,运行结束后,光标会停留在输出结束的地方,因此如果想让光标移动到下一行,可以在输出文本的结尾,手动添加一个换行符 \n 。

3. 如果文本内部有换行,可以通过插入换行符来实现,例如:printf ("Hello\nWorld\n");

1.3 占位符

1. 使用 printf 时可以在输出⽂本中指定占位符,所谓 “占位符”,就是这个位置可以⽤其他值代⼊。

2. // 输出 There are 3 apples

    #include <stdio.h>

    int main()

    {

           printf("There are %d apples\n", 3);

           return 0;

    }

3. 上⾯⽰例中,There are %d apples\n 是输出⽂本,⾥⾯的 %d 就是占位符,表⽰这个位置要可以⽤其他值来替换。占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型,例如,%d 表⽰这⾥代⼊的值必须是⼀个整数。 printf() 的第⼆个参数就是替换占位符的值,上⾯的例⼦是整数 3 替换 %d,执⾏后的输出结果就是 There are 3 apples 。

4. 输出⽂本⾥⾯可以使⽤多个占位符

5. #include <stdio.h>

    int main()

    {

           printf("%s says it is %d o'clock\n", "lisi", 21);

           return 0;

    }

6. 上⾯⽰例中,输出⽂本 %s says it is %d o'clock 有两个占位符,第⼀个是字符串占位符%s,第⼆个是整数占位符%d,分别对应 printf() 的第⼆个参数(lisi)和第三个参数(21),执⾏后的输出就是 lisi says it is 21 o'clock 。

7. printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。

8. printf 中常用的占位符:%c(字符)、%f(单精度浮点型)、%lf(双精度浮点型)、%s(字符串)、%d(十进制整型)、%p(指针)、%o(八进制整数)、%x(十六进制整数)、%zd(size_t类型)、%%(输出一个百分号)

1.4 占位符的输出格式

printf() 可以定制占位符的输出格式。

1.4.1 限定宽度

1. printf() 允许限定占位符的最⼩宽度,格式:在占位符%的后面添加数字。

2. #include <stdio.h>

    int main()

    {

            printf("%5d\n", 123); // 输出为 "  123"(前面有两个空格)

            return 0;

    }

3. 上⾯⽰例中, %5d 表⽰这个占位符的宽度⾄少为5位,如果不满5位,会在对应值的前⾯添加空格。输出的值默认是右对⻬,所以当宽度不够时会在输出内容的前面添加空格;如果希望改成左对⻬,即当宽度不够时在输出内容后⾯添加空格,可以在占位符的 % 的后⾯插⼊⼀个负号。

4. #include <stdio.h>

    int main()

    {

            printf("%-5d\n", 123); // 输出为 "123  "(后面有两个空格)

            return 0;

    }

5. 对浮点数占位符限定宽度,会限制小数中所有数字和小数点组成的最⼩显⽰宽度

6. // 输出 " 123.450000"

    #include <stdio.h>

    int main()

    {

           printf("%12f\n", 123.45);

           return 0;

    }

7. 上⾯⽰例中,%12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位, 所以 123.45 输出结果的头部会添加2个空格。

1.4.2 总是显⽰正负号

1. 默认情况下,printf() 不对正数显⽰ + 号,只对负数显⽰ - 号,如果想让正数也输出 + 号,可以在占位符的%后⾯加⼀个+ 。

2. #include <stdio.h>

    int main()

    {

           printf("%+d\n", 12); // 输出 +12

           printf("%+d\n", -12); // 输出 -12

           return 0;

   }

3. 上⾯⽰例中,%+d 可以确保输出的数值,总是带有正负号

1.4.3 限定⼩数位数

1. 输出⼩数时,有时希望限定⼩数的位数,举例来说,希望⼩数点后⾯只保留两位,占位符可以写成%.2f 。

2. // 输出 Number is 0.50

    #include <stdio.h>

    int main()

    {

            printf("Number is %.2f\n", 0.5);

            return 0;

    }

3. 上⾯⽰例中,如果希望⼩数点后⾯输出3位( 0.500 ),占位符就要写成%.3f 。

4. 这种写法可以与限定宽度占位符,结合使⽤

5. // 输出为 " 0.50"

    #include <stdio.h>

    int main()

    {

           printf("%6.2f\n", 0.5);

           return 0;

    }

6. 上⾯⽰例中,%6.2f 表⽰输出字符串最⼩宽度为6,⼩数位数为2,所以,输出字符串的头部有两个空格。

7. 另外,最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊

8. #include <stdio.h>

    int main()

   {

          printf("%*.*f\n", 6, 2, 0.5);// 等同于printf("%6.2f\n", 0.5);

          return 0;

   }

9. 上⾯⽰例中, %*.*f 的两个星号通过 printf() 的两个参数6和2传⼊。

1.4.4 输出部分字符串

1. %s 占位符⽤来输出字符串,默认是全部输出,如果只想输出开头的部分,可以⽤ %.[m]s 指定输出的⻓度,其中 [m] 代表⼀个数字,表⽰所要输出的⻓度。

2. // 输出 hello

   #include <stdio.h>

   int main()

   {

          printf("%.5s\n", "hello world");

          return 0;

  }

3. 上⾯⽰例中,占位符 %.5s 表⽰只输出字符串“hello world”的前5个字符,即“hello”。

本篇文章已完结,谢谢支持哟 ^^ !!! 

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

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

相关文章

记某APP登录逆向解密过程

最近在学习APP逆向相关的知识&#xff0c;刚好拿到了一个APP目标&#xff0c;该APP登录过程存在加密&#xff0c;所以记录下逆向破解的过程。流程 先介绍下拿到该APP后续所做的一些工作流程 选择相应版本安装到测试机当中进行抓包&#xff0c;查看数据包分析登录请求包&#x…

中国目前比较有影响力的人物颜廷利:不能升命, 活着何用?

不能‘升命’&#xff0c; 活着何用&#xff1f;…&#xff08;升命学说&#xff09; 21世纪东方哲学家思想家、科学家、当代中国教育界知名教授、专业周易起名改名字、易经姓名学专家、目前比较有影响力的人物、现代国学大师泰斗杰出代表颜廷利教授在《升命学说》‘净化论’里…

PCL 点云中的平面点云提取

平面点云提取 一. 索引提取1.1 算法概念1.2 算法流程1.3 主要函数二.代码示例三.结果示例一. 索引提取 1.1 算法概念 平面点云提取:是指从点云数据中提取出属于平面的点的过程。 1.2 算法流程 使用pcl::SACSegmentation类进行点云分割的基本步骤如下: 创建一个pcl::SACSegm…

Java 类与对象

目录 1 类是什么 1.1 面向对象 1.2 面向对象与面向过程 2 类定义和使用 2.1 类的定义格式 2.2 练习定义一个狗类 3 类的实例化 4 this引用 5 对象的构造与初始化 5.1 构造方法与初始化 5.2 默认初始化 5.3 就地初始化 1 类是什么 关于类是什么&#xff0c;我们需要对…

开源版本管理系统的搭建一:SVN服务端安装

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 点评&#xff1a;SVN本身非常简洁易用&#xff0c;VisualSVN文档支撑非常好&#xff0c;客户端TortoiseSVN非常专业。5星好评。 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司…

一、Mysql索引的底层数据结构与算法

Mysql索引的底层数据结构与算法 前言一、索引数据结构为什么 MySQL 的索引要使用 B 树而不是其他树形结构?比如 B 树?为什么InnoDB存储引擎选择使用Btree索引结构&#xff1f; 二、索引分类思考&#xff1a;以下SQL语句&#xff0c;那个执行效率高&#xff1f;为什么&#xf…

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…

【软件测试】测试用例设计方法

1. 等价类划分法1.1. 等价类划分法的定义1.2. 有效等价类和无效等价类1.3. 等价类划分法实例分析 2. 边界值分析法2.1. 边界值分析法的定义2.2. 边界点2.3. 边界值法实例分析 3. 判定表法3.1. 如何用判定表法设计测试用例3.2. 判定表法实例分析 4. 正交表法4.1. 什么是正交表4.…

Spring扩展点(二)Spring事务生命周期

Spring事务生命周期 Spring事务事务生命周期 接口 TransactionSynchronizationTransactionalEventListener&#xff08;另一种监听事务周期的方式&#xff09; Spring事务 Spring对JDBC事务做了封装&#xff0c;使其易于使用。主要分为声明式事务和编程式事务。 Transactiona…

批量美化图片,轻松实现多张图片描边,让图片瞬间焕发新生!

图片已成为我们日常生活中不可或缺的一部分。无论是社交媒体上的个人分享&#xff0c;还是商业宣传中的产品展示&#xff0c;高质量、精美的图片都扮演着至关重要的角色。然而&#xff0c;对于许多人来说&#xff0c;图片处理仍然是一个令人头疼的问题。现在&#xff0c;我们为…

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

NodeJS中实现一个真正的Sleep,Sleep期间不影响其它线程执行

NodeJS中实现一个真正的Sleep&#xff0c;Sleep期间不影响其它线程执行 Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它采用了单线程、事件驱动和非阻塞I/O模型。由于JavaScript是单线程的&#xff0c;传统意义上的线程睡眠&#xff08;如Java中的Thread.…

c++游戏小技巧16:实例1(地牢生成算法)

1.前言 (头图) &#xff08;其实最开始是想写恶魔轮盘的&#xff0c;但没想到它竟然更新了&#xff09; &#xff08;等我有时间在更&#xff0c;最近很忙&#xff0c;玩第五玩的&#xff09; 想法来源&#xff1a;房间和迷宫&#xff1a;一个地牢生成算法https://indienova…

机器学习(五)之损失函数

上面几节讲了监督学习和非监督学习的一些算法&#xff08;目前还不完整&#xff0c;会慢慢补充哒) 如果文章内容有错误&#xff0c;欢迎小伙伴在评论区指出! 前言&#xff1a; 损失函数在机器学习中非常重要&#xff0c;直接关乎模型的好坏&#xff08;so?学好它&#xff09;…

STM32G474 CMAKE VSCODE 开发环境搭建

本篇博文尝试搭建 stm32g474 的开发环境 一. 工具安装 1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 JlinkOpenOCDSTM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客 2. 导出一个 STM32 的 CMAKE 工程&#xff0c;这里略过。 3. 安装 ninja …

matlab期末知识

1.期末考什么&#xff1f; 1.1 matlab操作界面 &#xff08;1&#xff09;matlab主界面 &#xff08;2&#xff09;命令行窗口 &#xff08;3&#xff09;当前文件夹窗口 &#xff08;4&#xff09;工作区窗口 &#xff08;5&#xff09;命令历史记录窗口 1.2 matlab搜索…

用C#写一个特性,在函数上面可以自动计算函数耗时情况

用C#写一个特性&#xff0c;在函数上面可以自动计算函数耗时情况 TimingAttribute类是自定义的特性类&#xff0c;用来标记需要计时的方法。TimingInterceptor类是一个拦截器&#xff0c;它通过反射来拦截被TimingAttribute标记的方法&#xff0c;并在方法执行前后进行计时。My…

Elasticsearch:对 Java 对象的 ES|QL 查询

作者&#xff1a;Laura Trotta ES|QL 是 Elasticsearch 引入的一种新的查询语言&#xff0c;它将简化的语法与管道操作符结合起来&#xff0c;使用户能够直观地推断和操作数据。官方 Java 客户端的新版本 8.13.0 引入了对 ES|QL 查询的支持&#xff0c;提供了一个新的 API&…

Redis 实战2

系列文章目录 本文将从字典的实现、哈希算法、解决键冲突、rehash、渐进式rehash几方面来阐述 Redis 实战Ⅱ 系列文章目录字典的实现哈希算法解决键冲突rehash渐进式 rehash渐进式 rehash 执行期间的哈希表操作 字典 API总结 字典的实现 Redis 的字典使用哈希表作为底层实现&…

【大数据】学习笔记

文章目录 [toc]NAT配置IP配置SecureCRT配置PropertiesTerminal Java安装环境变量配置 Hadoop安装修改配置文件hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 环境变量配置 IP与主机名映射关系配置hostname配置映射关系配置 关闭防火墙…