【C语言】占位符集合

字面意义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑。

格式占位符(%)是在C/C++语言中格式输入函数,如 scanf、printf 等函数中使用。其意义就是起到格式占位的意思,表示在该位置有输入或者输出。

占位符是 C语言中非常有用的一种工具,可以通过指定不同的占位符来格式化输出不同类型的数据。我们可以使用常见的占位符来输出整数、浮点数、字符、字符串、指针等类型的数据,也可以使用修饰符来控制输出的格式,例如左对齐、填充 0、控制小数位数、控制输出宽度等。熟练掌握占位符和修饰符的使用,对于编写高效、清晰的代码非常重要。

以下这些都是 10 进制数
		整型:
        %d/%D   ----    以 int 类型的方式显示数据 
        %hd     ----    以 short 类型的方式显示数据 
        %hhd    ----    以 signed char 整形类型的方式显示数据
        %ld     ----    以 long 类型方式显示 
        %lld    ----    以 long long 类型方式显示 
        
        %u      ----    以 unsigned int 类型的方式显示数据 
        %hi     ----    为有符号的16位整型数(short);
        %hu     ----    以 unsigned short 类型的方式显示数据 
        %hhu    ----    以 unsigned char 整形类型的方式显示数据
        %qi     ----    为有符号的64位整型数(long long);
		%qu     ----    为无符号的64位整型数(unsigned long long);
        %lu     ----    以 unsigned long 类型方式显示 
        %llu    ----    以 unsigned long long 类型方式显示       

		浮点:
        %f      ----    以 float 方式显示  (保留6位小数)   12.500000
        %F      ----    为64位的浮点数(double)(保留6位小数)
        %lf     ----    以 double 方式显示 (保留6位小数)
        %.2f    ----    以float型进行打印 -> 保留2位小数
        %e/%E   ----    以 指数方式显示 -> 科学计数
        %g/%G   ----    以 合适的方式显示 -> 小数或科学计数
        %a,%A   ----    读入一个浮点值(仅C99有效)
        
        字符: 
        %c/%C   ----    以char型进行打印 ---> 针对字符型 
  		%s/%S   ----    以char型进程打印 ---> 针对字符串
  		详细描述:
        %c      ----    为8位的无符号字符%c(unsigned char),通过打印NSLog()将其作为一个ASCII字符,或者,不是一个ASCII字符,八进制格式\ddd或统一标准的字符编码的十六进制格式\udddd,在这里d是一个数字;
		%C      ----    为16位Unicode字符%C(unichar),通过打印NSLog()将其作为一个ASCII字符,或者,不是一个ASCII字符,八进制格式\ddd或统一标准的字符编码的十六进制格式\\udddd,在这里d是一个数字;
		%s      ----    对于无符号字符数组空终止,%s系统中解释其输入编码,而不是别的,如utf-8;
		%S      ----    空终止一系列的16位Unicode字符;

		例子:printf("%d %d %d %f %c\n",a,b,c,d,e,f);//format中拥有多个标志位:需给予同等的变参个数,且数据类型要匹配。
        
以下是八进制和十六进制 
		%i      ----    读入十进制,八进制,十六进制整数
        %o,%O   ----    为32位的无符号整数(unsigned int),打印八进制数; 
		%lo     ----    八进制 long int类型
		%llo    ----    八进制 long long int类型
		%lx     ----    十六进制 long int类型
		%llx    ----    十六进制 long long int型
		%llu    ----    unsigned long long int型
		%Le     ----    科学计数法表示的long double类型浮点
		%Lf     ----    long double类型浮点
        
        %x      ----    为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,小写a-f;
		%X      ----    为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,大写A-F;
		%x/%X   ----    以十六进制的格式进行打印 --->不带开头
        %#x     ----    以十六进制的格式进行打印  ---> 带开头
		%qx     ----    为无符号64位整数(unsigned long long),打印使用数字0-9的十六进制,小写a-f;
		%qX     ----    为无符号64位整数(unsigned long long),打印使用数字0-9的十六进制,大写A-F;

        %#o     ----    八进制显示 
        %#x/%#X ----    十六进制显示 
        %n      ----    已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
        
        %p      ----    打印地址 -> 读入一个指针 空指针(无效*),打印十六进制的数字0-9和小写a-f,前缀为0x
        %L      ----    在明确规定的长度下,进行修正,下面的一批数据a,A,e,E,f,F,g,G应用于双精度长整型的参数
        %[]     ----    扫描字符集合
        %%      ----    读 % 符号
        %z      ----    修改说明在%z长度以下d,i,o,u,x,X适用于某一指定类型的转换或者适用于一定尺寸的整数类型的参数;
		%zd     ----    size_t类型
		%t      ----    修改说明在%t长度以下d,i,o,u,x,X适用于某一指定类型或一定尺寸的整数类型的转换的参数;
		%j      ----    修改说明在%j长度以下d,i,o,u,x,X适用于某一指定类型或一定尺寸的整数类型的转换的参数
		%@      ----    对象 -> 关于这个后面有详解
        
        另外,printf 别样显示:
		%md     ----    m表示显示的宽度 
    					m是个正数 ,右对齐 (数据在右边)
    					m是个负数 ,左对齐 (数据左边)
    					如果m的值小于 最小显示的宽度 ,则m无效 
		例子:
    		int a = 10;
    		printf("%5d\n", a);

		%m.nf    ----   m表示显示的宽度(小数点算一个位置)
    					m是个正数 ,右对齐 (数据在右边)
    					m是个负数 ,左对齐 (数据左边)
    					如果m的值小于 最小显示的宽度 ,则m无效
    					n 代表保留的 小数位数 
    	
    	

		尽管有那么多的占位符,但是好像没有发现BOOL型的数据的占位符,看了一下别人是怎么解决这个问题的
			BOOL studyBool = YES;
			NSLog(@"打印BOOL型数据%@",studyBool?@"YES":@"NO");//打印BOOL型数据YES
			NSLog(@"打印BOOL型数据%d",studyBool);//打印BOOL型数据1

			BOOL alsoBool = NO;
			NSLog(@"打印BOOL型数据%@",alsoBool?@"YES":@"NO");//打印BOOL型数据NO
			NSLog(@"打印BOOL型数据%d",alsoBool);//打印BOOL型数据0

		%@    ----   Objective-C对象,印有字符串返回descriptionWithLocale:如果于的话,或描述相反.CFTypeRef工作对象,返回的结果的CFCopyDescription功能.(这个翻译有问题建议按照自己的理解方式理解)。

占位符的高级用法
			动态宽度和精度:
			可以使用*符号动态指定宽度和精度,这通常在函数中传递格式化参数时非常有用。
			int main() {
    				int width = 10;
    				double pi = 3.14159;
    				printf("动态宽度:%*f\n", width, pi);
    				return 0;
			}

			组合使用:占位符可以组合使用,以实现复杂的格式化输出。
			例如,可以同时指定宽度、精度和对齐方式。
			int main() {
    				double pi = 3.14159;
   					printf("宽度为10,精度为2,左对齐:%-10.2f\n", pi);
   					return 0;
			}

占位符是C语言中非常重要的一个工具,它可以帮助我们实现格式化输出、字符串处理和文件输出。在使用占位符时,我们需要注意类型匹配、溢出和截断以及安全性问题。希望大家能够全面理解和掌握C语言中的占位符,并在实际编程中灵活运用这一工具。

以上,是关于【C语言】中占位符的介绍。

我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!

相关推荐
Ajiang28247353042 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
幽兰的天空2 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou5 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
----云烟----7 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024067 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
开心工作室_kaic7 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it7 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
武子康7 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神8 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式