printf()函数的全面介绍及用法——简单易懂

news2024/12/24 21:03:19

printf()函数介绍

目录

printf()函数介绍

一:头文件

二:格式控制字符串

1.格式字符。

2.转义字符。

3.普通字符。

三:格式字符输出示例

1. %c-----------输出字符

2. %s-----------输出字符串

【注意】上述是 C语言的写法,当你在C++中用 printf()时,下面的写法肯定是错误的,因为 printf()函数不支持 std::string 类型,它期望的是 C 风格的字符串。

四:还可以指定输出数据的指定数据宽度和小数位数,即 %m.nf。

五:printf()函数中的格式修饰符

六:printf()函数的返回值


【说明】这是 C语言中的输出函数,当然在 C++ 中也可以使用,只是有的需要改变一下形式,下面会提及,C++中一般使用 cout。(这里篇幅比较长,可以收藏一下哦,如果对你有一些帮助的话,就点个赞吧 _^_  。)

一:头文件

printf()函数的头文件是 <stdio.h>。

二:格式控制字符串

格式控制字符串就是用双引号括起来的字符串,包括三类:

1.格式字符。

格式字符是由 "%" 引导,它是用来控制输出字符的格式。有这个字符串时,必须要保持输出值参数表中的数量和类型格式与格式字符一致,否则输出的值可能不是我们想要的

格式字符说明
%c字符型
%d十进制数
%i读入十进制、八进制、十六进制数,输入的时候正常是十进制,若输入0前缀的数将读入八进制,0X前缀读入16进制
%ffloat型浮点数
%o八进制
%s字符串,碰到空格或回车结束
%x16进制
%p指针
%n至此已读入值的等价字符数
%lfdouble型浮点数
2.转义字符。

按照转义后的含义输出,比如 "\n" ,意思是输出后换行。

3.普通字符。

意思是需要在输出时原样输出的字符,比如下面代码中的 "a="。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int a=31;
	printf("a=%d",a);// a是int型整数,所以用 %d
}

【输出结果】

三:格式字符输出示例

1. %c-----------输出字符
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	char ch='d';
	printf("%c",ch);
} 

【输出结果】

2. %s-----------输出字符串
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%s","Hello World!");
} 

【输出结果】

【注意】上述是 C语言的写法,当你在C++中用 printf()时,下面的写法肯定是错误的,因为 printf()函数不支持 std::string 类型,它期望的是 C 风格的字符串。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string str="Hello World!";
	printf("%s",str);
}

那么要怎么改呢?std::string 类提供了一个成员函数 c_str(),该函数返回一个指向以 null 结尾的字符数组的指针(即 C 风格的字符串),这个数组包含了字符串的内容。这个指针可以被 printf()函数接受。

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string str="Hello World!";
	printf("%s",str.c_str());
}

【输出结果】

【说明】其实关于 std::string 中的 c_str()函数,也有很多类似用处,比如——atoi()函数,atoi()函数可以将字符串转化成 int 型整数,这在字符串相关问题中是比较常用的,还是掌握一下比较好,具体的可以点进我的主页中,里面的一篇文章详细介绍了这个函数以及其他字符串中常用的函数。当转换 std::string 类型的字符串时就要用 c_str()函数。

四:还可以指定输出数据的指定数据宽度和小数位数,即 %m.nf。

1.其中 m 表示输出数据的宽度,即占 m 列,n 表示小数点后保留 n 位小数,如题目中没有强调输出数据的宽度,直接 %.nf 即可。

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=3.7839127;
	printf("%8.4f\n",a);
} 

【运行结果】

可以从结果中看出,输出的数据保留了四位小数,而且数据前有两个空格,还有换行。(还有 double 型数只能保证15位有效小数,即使指定小数位数为20或其他超过15的,比如 %.20f,也不能保证输出的20位小数都是有效数值)

【说明】保留小数还可以用 setprecision(n),n 是要保留的小数位数,注意前面要加上 fixed。比如,cout<<fixed<<setprecision(5)<<num;意思是保留 num 的五位小数并输出。

2.在 m.nf 前面加上一个负号,可以让输出的数据在域内向左靠齐。以上面代码为例。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=3.7839127;
	printf("%-8.4f\n",a);
} 

【运行结果】

五:printf()函数中的格式修饰符

1.字母 l 修饰字符 f、e、g 时,用于输出 long double 型数据。

2.字母 i 修饰字符 d、u、o、x 时,用于输出 long 型数据。

3.字母 h 修饰字符d、o、x 时,用于输出 short 型数据。

4.还有上面提到的 输出域宽m、显示精度n、(m、n都是整数),以及减号 -(输出数字或字符 ,在域内向左靠)。

六:printf()函数的返回值

这个其实用的并不多,也可以了解一下。

printf()函数返回值 int型,也就是说在进行嵌套使用时,它的打印格式是 %d。它返回的内容就是打印字符的个数。下面会举两个例子来说明。

【样例一】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%d",printf("%d",printf("%d",54)));
	return 0;
}

【输出结果】

先输出54,因为 printf("%d,54)打印出来的是两个字符,所以 printf("%d",printf("%d",54))输出的是2,同理,最终输出的是5421。

【样例二】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%d ",printf("%d ",printf("%d ",54)));
	return 0;
}

【输出结果】

这个和上面的差不多,只是 %d 后面有了一个空格,所以导致输出了 “54 3 2 ”。

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

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

相关文章

Linux中断实操-概念

1、裸机中的中断处理方法&#xff1a; &#xff08;1&#xff09;使能中断、初始化相应寄存器 &#xff08;2&#xff09;注册中断服务函数&#xff0c;向irqTable数组的指定标号处写入中断服务函数 &#xff08;3&#xff09;中断发生后进入IRQ中断服务函数&#xff0c;执行对…

【0~1】实现一个精简版的Tomcat服务器

真正的勇气&#xff0c;是在知道生活的真相之后&#xff0c;依然热爱生活。 《To Kill a Mockingbird》 01 Tomcat 介绍 Tomcat 是一个开源的 Java 应用服务器&#xff0c;主要用来运行基于 Servlet 和 JSP 技术的 Web 应用。Tomcat 实现了 Servlet 规范和 JSP 规范&#xff0…

一次RPC调用过程是怎么样的?

注册中心 RPC&#xff08;Remote Procedure Call&#xff09;翻译成中文就是 {远程过程调用}。RPC 框架起到的作用就是为了实现&#xff0c;调用远程方法时&#xff0c;能够做到和调用本地方法一样&#xff0c;让开发人员更专注于业务开发&#xff0c;不用去考虑网络编程等细节…

【开源免费】基于SpringBoot+Vue.JS企业客户管理系统(JAVA毕业设计)

本文项目编号 T 036 &#xff0c;文末自助获取源码 \color{red}{T036&#xff0c;文末自助获取源码} T036&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 管理员角色1.2 普通员工角色1.3 系统特点 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内…

苹果手机备份照片怎么删除

在数字时代&#xff0c;备份照片是保护我们珍贵记忆不受意外丢失影响的一种重要方式。苹果手机用户通常利用iCloud或iTunes来备份他们的照片&#xff0c;确保数据的安全。然而&#xff0c;随着时间的推移&#xff0c;这些备份可能会积累大量不再需要的照片&#xff0c;占用宝贵…

鸿蒙开发之ArkTS 基础二

ArkTS常用的基础数据类型 1.字符串 关键字是string 2.数字 关键字是number 3.布尔 关键字是boolean 语法格式是:let 变量名:变量类型 变量值 其中let是关键表示变量&#xff0c;可以修改&#xff0c;可以改变一只对应的是const 修饰&#xff0c;常量不能修改&#xff0c;…

Python画笔案例-050 绘制天空之眼

1、绘制天空之眼 通过 python 的turtle 库绘制 天空之眼&#xff0c;如下图&#xff1a; 2、实现代码 绘制 天空之眼&#xff0c;以下为实现代码&#xff1a; """天空之眼.py """ import math import turtledef draw_square(length,level):if l…

idea同时装了两个版本,每次打开低版本都需要重新激活破解

问题描述&#xff1a; idea同时装了两个版本&#xff0c;每次打开低版本都需要重新激活破解。低版本是2021.1&#xff0c;高版本是2023.1 解决方案&#xff1a; 找到idea的配置路径&#xff0c;比如我的是&#xff1a;C:\Users\Administrator\AppData\Roaming\JetBrains 2021…

【我要成为配环境高手】Nodejs安装与配置

文章目录 1.nodejs安装2.配置npm的全局安装路径3.切换npm的淘宝镜像4.安装vue-cli 1.nodejs安装 从官网下载安装LTS版本的nodejs nodejs会自动安装环境变量&#xff0c;因此安装完成后直接在cmd中查看node版本 node -v2.配置npm的全局安装路径 以管理员身份运行cmd&#xff…

office 2021安装教程

软件介绍 Microsoft Office是微软公司开发的一套基于 Windows 操作系统的办公软件套装。常用组件有 Word、Excel、Powerpoint等。该软件最初出现于九十年代早期&#xff0c;最初是一个推广名称&#xff0c;指一些以前曾单独发售的软件的合集。当时主要的推广重点是购买合集比单…

matlab边缘点提取函数

1、边缘提取 matlab自带点云边缘提取函数,用于搜索点云边界,其核心是alpha shapes算法。alpha shapes提取边缘点,主要是依据滚动圆绕点云进行旋转,实现边缘检测,原理如下图所示。具体原理及效果,可以参考之前我写的博客:基于alpha shapes的边缘点提取(matlab)-CSDN博客…

实习项目|苍穹外卖|day10

Spring Task cron 表达式 入门案例 订单状态定时处理 通知用户支付&#xff01;通知商家完成订单&#xff01; Scheduled(cron "0 0/1 * * * ? ")public void processTimeoutOrder(){log.info("定时处理超时订单: {}", LocalDateTime.now());//答案是…

黑马程序员Java笔记整理(day01)

1.windowsR进入运行&#xff0c;输入cmd 2.环境变量 3.编写java第一步 4.使用idea 5.注释 6.字面量 7.变量 8.二进制 9.数据类型 10.关键词与标识符

仿真软件PROTEUS DESIGN SUITE遇到的一些问题

仿真软件PROTEUS DESIGN SUITE遇到的一些问题 软件网上有很多下载地址自己找哈! 首先如果遇到仿真 没有库 ,需要在网上下载库文件替换到DATA目录下 如果不是默认安装到C盘需要手动修改这些地址,不然会报错!! 当遇到点击仿真出现报错 : 检查这个设置地址是否正确: 随便在库文…

Unity3D 小案例 像素贪吃蛇 02 蛇的觅食

Unity3D 小案例 像素贪吃蛇 第二期 蛇的觅食 像素贪吃蛇 食物生成 在场景中创建一个 2D 正方形&#xff0c;调整颜色&#xff0c;添加 Tag 并修改为 Food。 然后拖拽到 Assets 文件夹中变成预制体。 创建食物管理器 FoodManager.cs&#xff0c;添加单例&#xff0c;可以设置…

周期冲激函数

指数函数的求和----真周期冲击 指数函数有限积分----假单个冲击 指数函数无限积分----真单个冲击

职业院校数据科学与大数据技术专业人工智能实训室建设方案

一、引言 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;其在全球范围内的应用日益广泛&#xff0c;从智能交通、环境保护到公共安全、智能家居等多个领域均展现出巨大的潜力。然而&#xff0c;我国在人工智能领域的人才储备仍显不足&#xff0c;这已成为…

8. 尝试微调LLM大型语言模型,让它会写唐诗

这篇文章与3. 进阶指南&#xff1a;自定义 Prompt 提升大模型解题能力一样&#xff0c;本质上是专注于“用”而非“写”&#xff0c;你可以像之前一样&#xff0c;对整体的流程有了一个了解&#xff0c;尝试调整超参数部分来查看对微调的影响。 这里同样是生成式人工智能导论&a…

华为HarmonyOS地图服务 -- 三种地图类型 -- HarmonyOS9

一. 场景介绍 Map Kit支持以下地图类型&#xff1a; STANDARD&#xff1a;标准地图&#xff0c;展示道路、建筑物以及河流等重要的自然特征。NONE&#xff1a;空地图&#xff0c;没有加载任何数据的地图。TERRAIN&#xff1a;地形图。 1 标准地图&#xff1a; …

7.1溪降技术:徒步

目录 7.1 徒步运动概述观看视频课程电子书&#xff1a;徒步路线选择故事时间不稳定地形 7.1 徒步 运动概述 徒步是溪降活动中不可或缺的一部分&#xff0c;我们在下降峡谷时大部分时间都在徒步。随着我们进入更具挑战性的峡谷&#xff0c;能够高效移动将使我们更加自信和安全。…