详解C语言printf函数以及%占位符知识

[C/C++入门][printf输出]5、详解C语言和C++中的printf输出 printf是一种在C语言中用于格式化输出的函数。它是C标准库(stdio.h头文件中)提供的一部分。是每一个学习C语言(除非你从C++开始学)肯定会接触的输出函数。在大部分教程中都会教大家printf函数是如何使用,举个例子。int a = 50;这样子我们就可以把变量50给输出来啦。老师肯定说过,printf的第一个参数是输出的语句,其中会有例如%d说明后面读取的第一个变量的类型是整型,同样的,我们可以输出多个不同类型的变量。 阅读详情

功能:

C语言中产生格式化输出的函数(定义在stdio.h系统头文件中),向终端输出 (显示屏等。。。);

定义:

int printf(const char *format,[argument]);   //返回值是int类型。

%占位符


format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type


1.type: 规定输出的数据类型
d 有符号10进制整数i 有符号10进制整数o 无符号8进制整数u 无符号10进制整数x 无符号的16进制数字,并以小写abcdef表示X 无符号的16进制数字,并以大写ABCDEF表示f 浮点数E/e 用科学表示格式的浮点数g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数c 单个字符s 字符串S wchar_t字符(宽字符)类型字符串% 显示百分号本身p 显示一个指针,near指针表示为:XXXXfar 指针表示为:XXXX:YYYYn 相连参量应是一个指针,其中存放已写字符的个数

2.flags:规定输出格式,取值和含义如下:

无 右对齐,左边填充0和空格- 左对齐,右边填充空格+ 在数字前增加符号 + 或 -0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)空格 输出值为正时冠以空格,为负时冠以负号# 当type=c,s,d,i,u时没有影响type=o,x,X时,分别在数值前增加'0',"0x","0X"type=e,E,f时,总是使用小数点type=g,G时,除了数值为0外总是显示小数点

flags:这个根据自己理解,也可以这样简单的描述,比如:printf("%-2d", 3); 这条语句,在 % 与 d 之间, -N, N表示输出的数字的宽度,如果不够就用空格补齐右边

3.width  :
  
用于控制显示数值的宽度,取值和含义如下
  
    
n(n=1,2,3...) 宽度至少为n位,不够以空格填充
      
        
0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充
          
            
* 格式列表中,下一个参数还是width
  
    
4.prec 用于控制小数点后面的位数,取值和含义如下:


  

    

      
无 按缺省精度显示

        
          
            
0 当type=d,i,o,u,x时,没有影响
              
                
                  
type=e,E,f时,不显示小数点
                    
                      
                        
n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数
                          
                            
                              
type=其他,表示显示的最大宽度
                                
                                  
                                    
.* 格式列表中,下一个参数还是width
  
    
5.F|N|h|l  表示 指针 是否是 远指针 或整数是否是长整数
  
    
      
        
F  远指针
          
            
              
                
n 近 指针
                  
                    
                      
                        
h 短整数或单精度浮点数
                          
                            
                              
                                
l 长整数或双精度浮点数
          
            
              
                
                  
                    
                      
                        
                          
                            
                              
                                
前面扯了这么多有几个主要注意点:

    double a = 1.5333;

    printf("%-06.3lf", a);

这样写会有警告,屏幕打印:1.533[] ([]表示空格)简单分析下,%lf表示double类型,小数点后面是三位,-0,表示输出格式左对齐,然后0补齐右边,假如补齐了就是 1.5330,不是跟后面.3(小数点后面保留三位矛盾了?),所以我把它改成-06.4试试,还是有警告,结果输出1.5333,改成-07.4,输出 1.5333[], 小数点也会在一个数据位(姑且叫这玩意儿).

    在 % 与 d 之间, ON,N表示输出的数字的宽度, 如果不够就用0补齐左边(重点) 比如设置UIImageView的animationImages属性的时候,图片名字依次是 00 01 02 03 04 05.。。。。那么就用%02d(这个是UIKit里面的东西,C只做了解).

    在 % 与 d 之间, N, N表示输出的数字的宽度,如果不够就用空格补齐左边

    在 % 与 d 之间, -N, N表示输出的数字的宽度,如果不够就用空格补齐右边

    在 % 与 f 之间,可以有M.N, M 表示输出数字所占的宽度,N表示小数点后面的位数,如果不够会用空格补齐左边


总结:

1.不管怎么输出,不能改变原有的值,比如printf("%-03d", 5); ,这样会警告,-0,表示左缩进,然后0补齐右边。3表示位宽,也就是输出 500,(这样肯定不行)
2.- 和 0 不要同时用,-0表示表示左对齐,0补齐右边,对于int类型,改变了数值,对于double或者float 画蛇添足。
3.对于float和double,M.N 中 优先满足 小数点后面的位数:N 。
4.其实这些东西,不一定要盘根问到底,掌握几个常用的运用到开发中即可。
printf ,占位符和scanf函数 这里就已经完成了所有关于printf和scanf的学习了!欢迎大家补充。 阅读详情

相关推荐

【C语言的输入输出函数】—scanf函数和printf函数的详细介绍

您好!本篇将为您详细介绍C语言的输入输出函数,主要讲解printf函数和scanf函数的用法和一些注意事项相关的知识,知识点讲解得详细清晰明了,希望您可以耐心看完,一定会学到知识并且有更深刻的理解,希望您会喜欢。

2301_81647724的博客 2563

c语言scanf多个占位符,C语言再学习 -- printf、scanf占位符

一、printf()printf()的返回值为输出的字符个数:例:rv = printf ("hello"); 结果为rv = 5;其格式控制如下列表所述:表一、printf()格式转换说明符注意:不要忘记给控制字符串后面的列表中的每个项目都使用一个转换说明。转换说明输出%a浮点数、十六进制数和p-记数法(C99)%A浮点数、十六进制数和p-记数法(C99)%c一个字符%d有符号十进制整数%e浮...

weixin_30845893的博客 1530

【C初阶】scanf和printf函数介绍

printf()函数和scanf()函数能让用户可以和程序交流,它们是输出/输入函数,简称I/O函数。是库函数,给了一个标准,但是各个编译器的实现会有小部分差异。虽然printf()是输出函数,scanf()函数是输入函数,但它们的工作原理几乎相同。两个函数都使用格式字符串和参数列表。我们先介绍printf()函数,再介绍scanf()函数。

2301_82248162的博客 1954

wchar_t介绍及相关函数

转自http://hi.baidu.com/feifirkissyan/item/c25c0f4defd55d0a6dc2f072 wchar_t的使用 比如求宽字符串长度的函数是  size_t __cdel wchlen(const wchar_t*);    为什么要专门定义这些函数呢?最根本的原因是,ANSI下的字符串都是以’\0’来标识字符串尾的(Unicode字符串以“

wyxTech的专栏 3677

SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明

SE-0526激光避障雷达扫描传感器广泛应用于原材料运输与处理、移动装配、托盘或货架运输、产成品自动运输、生产线自动对接,餐厅自助送餐等AGV小车、服务机器人、仓储机器人、无人叉车导航、避障、定位等。 本文重点介绍SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明。

华翔天诚科技 2693

android OTA升级之后,apk崩溃无法启动

也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。

kevin's cache的专栏 1346

C语言setlocale 函数的功能

本文主要介绍ASCII表发展历程,以及切换本地化ASCII表,实现宽字符的打印

YUYUJOB的博客 1547

【MNE脑电信号处理学习笔记1】数据的读取、可视化、剪裁、滤波和保存

MNE之读取原始数据、可视化数据、剪裁数据、滤波和保存 Reading & visualizaing raw data, cropping, filtering, and saving 原视频教程:Pybrain: M/EEG analysis with MNE Python 原笔记和材料:pybrain_mne 本文根据视频和个人理解对原笔记进行细微修改。 Import the few packages we’ll need import matplotlib import pathlib i

小白家 4214

scanf函数和占位符

scanf和占位符

gyyz995的博客 625

STM32 | DMA配置和使用如此简单(超详细)

DMA学习很难吗?其实DMA配置和使用如此简单!本文让你无论在DMA认识和理解上(抽象不抽象都有)还是在DMA配置和使用上有个彻彻底底的认识。文章包括寄存器和库函数讲解,省去你自行翻阅使用手册和固件库手册,点到点教会你DMA的配置和使用。

。。。 7万+

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 966

scanf占位符及赋值忽略符

用户的输入有可能不符合预定格式,scanf()提供了一个赋值忽略符,只要把 * 加在任何占位符的百分号后面。%[ ] 在方括号中指定一组匹配的字符(比如%[0—9]),遇到不在集合中的字符,匹配会停止。上面的所有占位符中除了%c之外,都会自动会忽略起始的空白字符。%c不忽略空白字符。以上代码若用户输入2024-2-28时可以忽略- -%Lf long double类型浮点数。scanf()常用的占位符如下,%lf double类型浮点数。%f float类型浮点数。

MUMU_123456789的博客 1026

人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】

摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字)

cdfunlove的博客 633

【C语言指南】printf()函数详解

printf 函数在输出格式 format 的控制下,将其参数进行格式化,并在标准输出设备(显示器、控制台等)上打印出来。printf函数是C语言最常用且功能强大的库函数,搞明白printf函数能在工作中做到事半功倍的效果

倔强的石头的博客 3万+

指纹浏览器降维打击(下):Cloudflare Turnstile 与 hCaptcha 的底层交互逻辑

本文将深度拆解:Turnstile 与 hCaptcha 的 Iframe 沙箱通信机制,动态混淆 JS 与 PoW(工作量证明)的物理破解法则,以及如何通过 C++ 底层事件合成与环境基因强绑定,实现验证码的“无感过验”。

数据知道的博客 419

NX二次开发 内部函数鼠标动态位置获取

内部函数鼠标动态位置获取

qq285503851的博客 3336

C语言printf函数

C语言中的printf函数是标准格式化输出函数,用于向屏幕输出格式化字符串。其函数原型为int printf(const char *format,...),通过格式控制字符串指定输出类型和格式,支持多种数据类型(如%d、%f、%s等)和格式选项(标志、宽度、精度等)。printf还能处理转义字符(如\n、\t)实现特殊输出效果。该函数返回输出字符数,出错时返回负值并设置错误标志。

vbnetcx的博客 5万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C语言中“printf”占位符用法详解

本文主要讲述常见占位符在“ printf ”中的应用,以及占位符的标准格式。

LiU11e的博客 4031

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C语言中scanf函数详解

scanf函数   上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去。既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数。   scanf的功能是将键盘输入的字符串转换成整数、浮点数、字符或字符串。 1. scanf函数的使用公式 scanf是一个变参函数。(参数的数量和类型不确定) scanf的第一个参数是字符串。 scanf的第一个参数是需要输入的字符串以及需要被读取的占位符。 scanf的后续参数,是依次被读取并赋值的变量地址。 占位符的类型和数量需要与

小杰码匠 4万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言第四弹---printf和scanf详解

1、printf和scanf详解介绍 1.1 printf 1.1.1 基本用法 1.1.2 占位符 1.1.3 占位符列举 1.1.4 输出格式 1.1.4.1 限定宽度 1.1.4.2 总是显示正负号 1.1.4.3 限定小数位数 1.1.4.4 输出部分字符串 1.2 scanf 1.2.1 基本用法 1.2.2 scanf的返回值 1.2.3 占位符 1.2.4 赋值忽略符

小林熬夜学习编程的博客 2005

【C语言】库函数scanf和printf详解,地表最全总结,不看后悔系列

printf和scanf可以说贯穿了编程的始终,它们是程序员手中不可或缺的工具。它们以简洁而强大的功能,为程序员提供了一个与计算机和用户交互的桥梁,让程序不再是孤立的存在,而是能够与用户进行对话、交流的智能体。让我们在编程的道路上,善用printf和scanf,创造出更多优秀、有用的程序,为我们的生活带来更多的便利和乐趣。

2401_82666224的博客 7242

C语言基础-printf函数的详解

占位符,转义字符·,printf的返回值

qq_62760151的博客 2583

[C语言] printf()函数及占位符的使用

printf()函数是C语言最基本的需要掌握的函数, 它可以在控制台输出相应内容. 而占位符可以与printf()函数组合使用. 本文将讲解printf()函数及占位符的使用.

w147288的博客 966

C语言---printf scanf及其占位符详解

printf的作用是向屏幕设备按照规定的格式输出信息。要注意,在使用中要利用到头文件<stdio.h>,它里面的f全称为format(格式化),表示可以定制输出文本的格式。下面我们利用printf写一个简单的代码。return 0;结果如图:可以看到,利用printf()可以在屏幕上打印出自己想要的结果。printf()在运行结束后光标就停留在输出结束的地方,不会自动换行。所以为了让光标移到下一行的开头,可以在文本末尾处添加一个换行符\n。

m0_65245374的博客 1436

【C语言】printf()

C语言printf()基本用法,占位符,限定输出宽度,限定小数位数,保留正负号,输出部分字符串

石墨博客 5858

【C语言】printf函数详解

【C语言】printf函数的详解

zore__的博客 6832
上一篇: 项目中的BUG
下一篇: 感触,在凌晨05:00.
HL_developer
博客等级 码龄11年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值