C语言格式化说明符

深入理解c格式化输出 格式化输出考察了不仅考察各种数据类型的转换以及你对内存的理解 首先,要很清楚各个不同数据类型的大小,这个做面向对象的基础 #include <stdio.h> printf("size of int:\t\t[%d]\n", sizeof(int)); printf("size of long:\t\t[%d]\n", sizeof(long)); printf("size o... 阅读详情

原文http://www.cnblogs.com/xiu619544553/p/5247288.html

1.1.1 格式化输入输出函数
一、printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:
printf("<格式化字符串>", <参量表>);
其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原
样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,
用来确定输出内容格式。
参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出
参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想
不到的错误。

1. 格式化规定符
Turbo C2.0提供的格式化规定符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
——————————————————————————
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
━━━━━━━━━━━━━━━━━━━━━━━━━━
说明:
(1). 可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度
为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
2. 一些特殊规定字符
━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 作用
——————————————————————————
\n 换行
\f 清屏并换页
\r 回车
\t Tab符
\xhh 表示一个ASCII码用16进表示,
其中hh是1到2个16进制数
━━━━━━━━━━━━━━━━━━━━━━━━━━

例1:

复制代码
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char c, s[20], *p;
 6     int a=1234, *i;
 7     float f=3.141592653589;
 8     double x=0.12345678987654321;
 9     p="How do you do";
10     strcpy(s, "Hello, Comrade");
11     *i=12;
12     c='\x41';
13     printf("a=%d\n", a); /*结果输出十进制整数a=1234*/
14     printf("a=%6d\n", a); /*结果输出6位十进制数a= 1234*/
15     printf("a=%06d\n", a); /*结果输出6位十进制数a=001234*/
16     printf("a=%2d\n", a); /*a超过2位, 按实际值输出a=1234*/
17     printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/
18     printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/
19     printf("i=%p\n", i); /*输出地址i=06E4*/
20     printf("f=%f\n", f); /*输出浮点数f=3.141593*/
21     printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数
22                             f=3.1416*/
23     printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/
24     printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点
25                                数x=0.1234567898765432*/
26     printf("c=%c\n", c); /*输出字符c=A*/
27     printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/
28     printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello, Comrade*/
29     printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello,
30                               Co*/
31     printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/
32     printf("*p=%s\n", p); /* 输出指针字符串p=How do you do*/
33     printf("p=%p\n", p); /*输出指针的值p=0194*/
34     getch();
35     retunr 0;
36 }
复制代码

上面结果中的地址值在不同计算机上可能不同。
例1.中第一条语句#include<stdio.h>的含义是调用另一个文件stdio.h, 这
是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
二、scanf()函数
scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。
其调用格式为:
scanf("<格式化字符串>", <地址表>);
格式化字符串包括以下三类不同的字符;
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多
个空白字符。
3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非
空白字符相同的字符。
地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数
完全不同, 要特别注意。各个变量的地址之间同","分开。


例2:

复制代码
1 main()
2 {
3     int i, j;
4     printf("i, j=?\n");
5     scanf("%d, %d", &i, &j);
6 }
复制代码

上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最
后读入另一个整型数。如果","这一特定字符没有找到, scanf()函数就终止。若
参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。
说明:
(1). 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就
是地址, 因此使用scanf()函数时, 不需要在它们前面加上"&"操作符。


例3:

复制代码
1 mian()
2 {
3     char *p, str[20];
4     scanf("%s", p); /*从健盘输入字符串*/
5     scanf("%s", str);
6     printf("%s\n", p); /*向屏幕输出字符串*/
7     printf("%s\n", str);
8 }
复制代码

(2). 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数, 表示
任何读操作中的最大位数。
如例3中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句
变为
scanf("%10s", p);
程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读
入函数即scanf("%s", str)就会从第11个字符开始读入。
实际使用scanf()函数时存在一个问题, 下面举例进行说明:
当使用多个scanf()函数连续给多个字符变量输入时, 

例如:

复制代码
1 main()
2 {
3     char c1, c2;
4     scanf("%c", &c1);
5     scanf("%c", &c2);
6     printf("c1 is %c, c2 is %c", c2\1, c2);
7 }
复制代码

运行该程序, 输入一个字符A后回车 (要完成输入必须回车), 在执行scanf
("%c", &c1)时, 给变量c1赋值"A", 但回车符仍然留在缓冲区内, 执行输入语句
scanf("%c", &c2)时, 变量c2输出的是一空行, 如果输入AB后回车, 那么输出结
果为: c1 is A, c2 is B。
要解决以上问题, 可以在输入函数前加入清除函数fflush()( 这个函数的使
用方法将在本节最后讲述)。

修改以上程序变成:

复制代码
1 main()
2 {
3     char c1, c2;
4     scanf("%c", &c1);
5     fflush(stdin);
6     scanf("%c", &c2);
7     printf("c1 is %c, c2 is %c", c1, c2);
8 }
复制代码

1.1.2 非格式化输入输出函数
非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替, 但
这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比较
方便。下面分别进行介绍。
一、puts()和gets()函数
1. puts()函数
puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用格式为:
puts(s);
其中s为字符串变量(字符串数组名或字符串指针)。
puts()函数的作用与语printf("%s\n", s)相同。


例4:

复制代码
1 main()
2 {
3     char s[20], *f; /*定义字符串数组和指针变量*/
4     strcpy(s, "Hello!"); /*字符串数组变量赋值*/
5     f="Thank you"; /*字符串指针变量赋值*/
6     puts(s);
7     puts(f);
8 }
复制代码

说明:
(1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。
(2). 可以将字符串直接写入puts()函数中。如:
puts("Hello, Turbo C2.0");
2. gets()函数
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符
不属于这个字符串。其调用格式为:
gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)
函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,
空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符
串直到回车为止。

 

例5:

复制代码
 1 main()
 2 {
 3     char s[20], *f;
 4     printf("What's your name?\n");
 5     gets(s); /*等待输入字符串直到回车结束*/
 6     puts(s); /*将输入的字符串输出*/
 7     puts("How old are you?");
 8     gets(f);
 9     puts(f);
10 }
复制代码
C/C++占位符,%x和%p的区别 今天遇到了一个很奇怪的问题,当使用`malloc`分配了一个堆空间后,分别尝试用`cout`和`printf`尝试打印该地址,出现了两个地址不一样的情况:可以看出两个地址低32位是一致的,出现问题的原因应该是`printf`显示不全导致的。 阅读详情

相关推荐

C语言基础-%x(16进制)输出的几种格式

/* Time:2020.7.10 Aim:测试十六进制的不同输出方式,%x,%X,%#x,%#X; */ include <stdio.h> int main(void) { int i = 47; printf("%x\n",i); //输出结果应该是2f printf("%X\n",i); //输出结果应该是2F(大写的F) printf("%#x\n",i); //输出结果应该是0x2f(前面加0x前缀,表示16进制) printf("%#X\n",i); //输

qq_44809753的博客 1万+

关于c中的%x及其它格式化符

格式化:%x表示按16进制输出;int a = 16;%02x:输出10;%03x:输出:010;%04x:输出:0010;

懒人的技术笔记 3万+

C语言格式化输出

格式化输出 格式化输出的函数有printf、sprintf和snprintf等,功能略有不同,使用方法大同小异,本章节我们以printf为例。 对于 printf 函数,相信大家并不陌生。之所以称它为格式化输出函数,该函数的声名如下: int printf(const char *format, ...); 大家看...

C语言技术网-码农有道 1万+

C语言中的格式化输出符号:%d %c %p %x等

d是C语言中的格式化输出符号,用于将整数值按照十进制格式输出到标准输出流(通常是控制台)。它可以用于printf函数中的格式化字符串中,指示要输出的整数的位置和格式。例如,"%d"可以用来输出一个整数变量的值。%c是C语言中的格式化输出符号,用于输出字符。在printf函数中,%c可以用来输出一个字符变量的值。在你的代码中,如果你想打印出数组元素的字符表示,你可以使用%c。在C语言中,%p是一种格式化输出的转换说明符,用于打印指针变量的值。输出其他类型的数据,将会导致未定义的行为。类型的数据,如果使用。

Shujie 7万+

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 294

手把手教你使用Segformer训练自己的数据

SegFormer 基于Swin transformer 修改

weixin_38353277的博客 2万+

C语言fscanf/fprintf函数(格式化读写文件)的用法(%[]和%n说明符)

文章目录[]基本用法[]特殊用法%n用法fscanf() 和 fprintf() 函数简单示例 []基本用法 scanf() fscanf()函数,均从第一个非空格的可显示字符开始读起! 众所周之,scanf以空白字符为定界符,但如果输入的字符串是以其它字符为定界符的,那怎么办? [ ] 就是专门处理这个问题的转换说明符。 [ ] 转换说明符可以通过两种方式产生结果字符集 如果第一个 [ 字符右边没有抑扬符 ( ^ ) ,那么处于[ ]之间的字符就是结果字符集,不在其中的可输入字符都作为定界符;

“逛丢一只鞋”的博客 3478

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1274

c语言格式字符和格式说明符,C格式说明符

C格式说明符格式说明符是在格式化的输入和输出函数中使用的字符串。格式字符串确定输入和输出的格式。格式字符串始终以’%’字符开头。printf()函数中常用的格式说明符是:Format specifierDescription%d or %iIt is used to print the signed integer value where signed integer means that the...

weixin_26878995的博客 2230

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

RK3568下MIPI屏幕调试技巧

通过合理配置设备树节点、精确计算像素时钟并完成编译烧录,可高效实现RK3568平台MIPI屏幕的点亮与显示调试。关键在于严格遵循屏幕规格书参数,结合内核日志定位问题,逐步优化时序配置。掌握这一流程后,开发者可快速适配不同分辨率、刷新率的MIPI屏幕,为嵌入式系统显示模块开发奠定基础。如果在调试中遇到特定问题(如驱动匹配失败、时钟计算误差),建议优先查阅屏幕规格书和RK3568芯片手册,或通过内核社区(如Linux-DRI邮件列表)获取支持。

文石_2009的博客 1204

C语言转换说明符深度解析:从内存模型到格式化输入输出实战

在C语言编程中,格式化输入输出是连接程序内部数据与外部世界的关键桥梁。其核心原理在于转换说明符,它本质上是指导函数如何解释内存原始字节的“翻译手册”。理解这一机制对于避免类型不匹配、内存访问错误等底层问题至关重要。从技术价值看,掌握转换说明符不仅能提升代码的健壮性和可调试性,还能在嵌入式开发、系统编程等场景中精准控制数据表示。例如,在调试时,%x用于查看内存十六进制内容,%p用于安全输出指针地址;在数据处理中,%f、%e、%g则分别对应定点、科学计数和自动格式选择。本文聚焦于C语言中%d、%u、%f、%p等

weixin_33806859的博客 288

​​手把手教你学PCIE--ATU 的 Bar 匹配模式与地址匹配模式详解​

摘要: ATU(地址转换单元)提供两种地址匹配模式:Bar匹配模式基于PCI设备的BAR寄存器自动映射虚拟地址(只需配置物理基址),适用于标准PCI设备DMA;地址匹配模式需显式配置虚拟与物理地址范围,适合自定义映射场景。核心区别在于匹配依据(BAR自动推导vs人工定义),Bar模式简化配置,地址模式更灵活。

MHD0815的博客 380

c语言其他格式化字符串规定符,C语言格式化说明符(示例代码)

1.1.1 格式化输入输出函数一、printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf("", );其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。参量表...

weixin_39686192的博客 437

生成对抗网络(GAN)在数据增强中的应用【附核心实战代码】

生成对抗网络(GAN)由Ian Goodfellow等人在2014年提出。它包含两个主要的部分:生成器(Generator)和判别器(Discriminator)。生成器负责生成假数据,而判别器则用于区分输入的数据是真实的还是由生成器生成的。通过这种对抗过程,生成器不断优化自己,生成越来越真实的样本。最终,生成器生成的样本几乎无法被判别器区分与真实数据。

一键难忘的博客 3120

Matlab:Matlab 软件学习之Matlab内置的各种系统的简介、案例应用(基于Simulink模糊控制仿真/二阶瞬态震荡电路案例)之详细攻略

选择左上角要编辑变量的图标,给定当前变量的论域Range,设置隶属函数类型type(八种隶属函数类型以供选择),最后选中某个隶属度函数(选中为红色),移动绘图区的每个隶属度函数的三个端点(竖向为权重)。(1)、首先在模糊规则编辑器左边选择一个输入变量,并选中它的一个语言值(隶属函数),然后编辑器右边选择一个输出变量,并选中它的一个语言值(隶属函数),然后将这种关系添加到模糊规则中。制定完成后,会形成模糊规则矩阵,系统会根据模糊输入量(如r1、r2),经过模糊规则(如45条),进而确定输出量(Y1、Y2)。

走向CTO之路 1123

C语言格式化输入转换说明符

好久没用C语言了,最近工作上有点需要,

lbwhhit的专栏 509

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

刘某的C语言笔记之C语言的格式化输入输出

这是我在牛客刷题时,遇到的一个格式化输出问题,也就是%n.ms。在自己试验后发现了一些不清楚的小问题以及一些有趣的地方,特此记录,如有错误,欢迎指正。)使用格式说明符来控制数据的显示和解析方式。这些格式说明符提供了灵活的方式来控制数据的显示格式,使得输出结果更加符合需求。在C语言中,格式化输入输出函数(如。

Leo521green的博客 422

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C 语言格式化输入输出详解

在 C 语言编程中,printf和scanf是两个非常重要的标准输入输出函数。它们使用格式说明符(format specifier)来控制数据的输入和输出。本文将详细讲解格式说明符的组成部分,并结合示例说明其在 C 语言中的应用。

Yhame的博客 1135

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

c语言字符串格式化输出

C语言的printf函数提供了丰富的格式化输出功能,使得可以精确控制输出数据的格式。这里给出一个更完整的指南,包括常用的格式说明符、修饰符以及它们的用法。

qq_62725929的博客 1466

scanf/ 格式化说明符/各种进制的分别读入、

/*函数名:   scanf   功     能:   执行格式化输入   用     法:   int   scanf(char   *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘)   读取输入

926

c语言printf()输出格式大全

(转载)原始出处未知 1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和double) %e(%E) 浮点数指数输出[e-(E-)记数法] ...

rusty knife 26万+

C 语言 printf() 格式化输出详细笔记

在 printf() 中,使用 * 占位符结合外部参数动态指定输出的宽度和精度。格式%*s:* 表示宽度由外部参数指定。%.*s:.* 表示精度(输出的字符个数)由外部参数指定。%*.*s:同时指定宽度和精度。%n 是一个特殊格式说明符,不输出内容,而是将当前已输出的字符数存储到指定的整数指针变量中。功能printf()通过格式说明符控制输出格式,支持多种数据类型。格式%[标志][宽度][.精度][长度]类型,如%-5.2f。常见说明符%d(整数)、%f(浮点数)、%s(字符串)、%p(指针)。

qq_63012690的博客 1868

C语言的格式化输出函数printf

printf是C语言的标准输入输出库stdio提供的库函数,所以在使用它时,需要使用#include <stdio.h>指令包含stdio.h头文件。printf的功能用以显示格式化字符串的内容,其输入参数必须包括格式化字符串,可能需要提供插入在字符串指定位置的值。格式化字符串由普通字符和转换说明组成,普通字符完全如在格式化字符串中显示的那样打印出来,而转换说明以字符%开头,表示为插入值提供的占位符

奔梦记 1万+
上一篇: UITableView判断reloadData结束
下一篇: 限制UITextView输入字数
csdndimo
博客等级 码龄13年 0粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值