C语言中输入输出所有格式控制符

C语言中输入输出所有格式控制符title:C语言中输入输出所有格式控制符date:2020-01-1617:02:06description:C语言输入输出的所有格式控制详解C语言中输入输出所有格式控制符 最近在重温C语言,发现C语言的输入输出函数scanf和printf函数在控制输入输出时有许多控制符来控制输入输出数据的格式。于是就打算来整理一下。参考百度百科词条 scanf()是C语言中的一个输入…

大家好,又见面了,我是你们的朋友全栈君。


title: C语言中输入输出所有格式控制符

date: 2020-01-16 17:02:06

description: C语言输入输出的所有格式控制详解


C语言中输入输出所有格式控制符

 最近在重温C语言,发现C语言的输入输出函数scanf和printf函数在控制输入输出时有许多控制符来控制输入输出数据的格式。于是就打算来整理一下。

C语言中输入输出所有格式控制符

参考百度百科词条

 scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

 printf命令的作用是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为:printf(”<格式化字符串>”, <参量表>)。printf()是C语言标准库函数,在 stdio.h 中定义。输出的字符串除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

函数定义

 int printf(char *format…);
 int scanf(const char * restrict format,…);

函数返回值

 printf 函数的返回值为printf实际控制输出的字符数。
 scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

格式控制字符串format

 printf的格式控制字符串format组成如下:

%[flags][width][.prec][length]type

 即:%[标志][最小宽度][.精度][类型长度]类型控制符
 详解见下文。

用法详解

 通常意义上format的格式如下:[]里的内容表示可选,即可带可不带。

%[flags][width][.prec][length]type

 规定输出数据的格式,具体如下:[1]

类型控制符type

 type的字符用于规定输出数据的类型,含义如下:

字符 对应数据类型 含义
d / i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法
o unsigned int 无符号8进制整数(不输出前缀0)
u unsigned int 无符号10进制整数
x / X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
f(lf) double 单精度浮点数和双精度浮点数用f(lf 在C99开始加入标准,意思和 f 相同)
e / E double 科学计数法表示的数,基数为10,此处”e”的大小写代表在输出时用的”e”的大小写
a / A double 16进制科学计数法表示的数,基数为2,以p表示,以16进制输出,此处”a”的大小写代表在输出时用的”p”的大小写
g / G double 有效位数,如:%.8g表示单精度浮点数保留8位有效数字
c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
s / S char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0’结尾,这个’\0’即空字符)
p void * 以16进制形式输出指针
n int * 到此字符之前为止,一共输出的字符个数,不输出文本
% 无输入 不进行转换,输出字符‘%’(百分号)本身
m 打印errno值对应的出错内容,(例: printf(“%m\n”); )

 注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f。

标志flags

 flags规定输出样式,取值和含义如下:

字符 字符名称 说明
减号 左对齐,右边填充空格(默认右对齐)
+ 加号 在数字前增加符号 + 或 –
0 数字零 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用”-“)
空格 输出值为正时加上空格,为负时加上负号
# 井号 type是o、x、X时,增加前缀0、0x、0X;type是e、E、f、g、G时,一定使用小数点;type是g、G时,尾部的0保留
示例:
printf("%5d\n",1000);           //默认右对齐,左边补空格
printf("%-5d\n",1000);              //左对齐,右边补空格
printf("%+d %+d\n",1000,-1000);     //输出正负号
printf("% d % d\n",1000,-1000);//正号用空格替代,负号输出
printf("%x %#x\n",1000,1000);       //输出0x
printf("%.0f %#.0f\n",1000.0,1000.0)//当小数点后不输出值时依然输出小数点
printf("%g %#g\n",1000.0,1000.0);   //保留小数点后后的0
printf("%05d\n",1000);              //前面补0

输出最小宽度width

 用于控制显示数值的宽度,取值和含义如下:

 n(n=1,2,3,4,5,6…): 宽度至少为n位,不够以空格填充。

&esmp;* 格式列表中,下一个参数还是width

 width是一个可选的指定最小值字段宽度的十进制数字字符串。如果转换值字符少于字段宽度,该字段将从左到右按指定的字段宽度填充。如果指定了左边调整选项,字段将在右边填充。如果转换结果宽于字段宽度,将扩展该字段以包含转换后的结果。不会发生截断。然而,小的精度可能导致在右边发生截断。

精度.prec

 用于控制小数点后面的位数,取值和含义如下:

 无按缺省精度显示0
 当type=d,i,o,u,x时,没有影响;
 type=e,E,f时,不显示小数点
 n(n=1,2,3…)
 当type=e,E,f时表示的最大小数位数;
 type=其他,表示显示的最大宽度
 prec是指可选的精度。精度是一个.(点)后跟十进制数字字符串。如果没有给出精度,按 0(零)对待。精度指定:

  • * d、o、i、 u、x 或 X 转换的最少数字显示位数。
  • * e 和 f 转换的基数字符后的最少数字显示位数。
  • * g 转换的最大有效数字位数。
  • * s 转换中字符串的最大打印字节数目。

类型长度length

 类型长度指明待输出数据的长度。因为相同类型可以有不同的长度,比如整型有16bits的short int,32bits的int,也有64bits的long int,浮点型有32bits的单精度float和64bits的双精度double。为了指明同一类型的不同长度,类型长度(length)应运而生,成为格式控制字符串的一部分。

length 描述
h 参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 X)。
l 参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)。
L 参数被解释为长双精度型(仅适用于浮点数说明符:e、E、f、g 和 G)。

 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。 [2]

转义序列

 这些转义序列在字符串中会被自动转换为相应操作命令。使用的常见转义字符如下:

符号 意义 符号 意义
\a 铃声(提醒) \b Backspace
\f 换页 \n 换行
\r 回车 \t 水平制表符
\v 垂直制表符 \’ 单引号
\” 双引号 \\ 反斜杠
? 文本问号 \ooo(例如\024) ASCII字符(OCX)
\xhh (例如:\x20) ASCII字符(HEX) \xhhhh 宽字符(2字节HEX)

 例如,WCHAR f = L’\x4e00’ 或 WCHAR b[] = L”The Chinese character for one is \x4e00″。

[1]Brian W.Kernighan,Dennis M.Ritchie.C程序设计语言.中国:机械工业出版社,2004年1月1日:221-222
[2]Stephen Prata.C Primer Plus(第五版):人民邮电出版社,2005年2月1日

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163863.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件测试的基本理论知识_软件测试基础知识整理

    软件测试的基本理论知识_软件测试基础知识整理01软件研发流程1.软件产品软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。2.软件工程软件工程,英文名SoftwareEngineering,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。“软件工程是开发、运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件工程是系统方法而不是某种…

    2025年7月30日
    0
  • 将图片保存到系统相冊的两种方法[通俗易懂]

    将图片保存到系统相冊的两种方法

    2022年1月23日
    120
  • 浏览器如何查看session_获取浏览器的cookie

    浏览器如何查看session_获取浏览器的cookie前言使用chrome查看cookiechrome版本73.0.3664.0(开发者内部版本)(32位)方法1,使用chrome访问目标网站2,在chrome的地址栏中查看网站信息https是这样的:http(没有s)是这样的:3,在弹出的菜单中选择cookie4,选择想要查看的cookie进行查看……

    2025年6月22日
    0
  • 微生物组助手——最易学的扩增子、宏基因组分析流程

    微生物组助手——最易学的扩增子、宏基因组分析流程软件简介MicrobiomeHelper开源软件,方便大家分析微生物组数据。不仅提供了多套扩增子、宏基因组的分析流程方案,同时提供了几十个软件间衔接的脚本,可大大提高使用者分析的效率。文章于2017年发表于mSystems。Github项目主页:https://github.com/LangilleLab/microbiome_helpermicrobiomehelp结合不同组…

    2022年5月9日
    42
  • pycharm 2022.01.21激活码(JetBrains全家桶)2022.03.08

    (pycharm 2022.01.21激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~40…

    2022年4月2日
    79
  • 放出一套完整的进销存软件源码[通俗易懂]

    放出一套完整的进销存软件源码[通俗易懂]商易进销存2.0vb+sqlserver下载地址:http://60.2.39.130/microerp/源码非常完整,从速下载,过期失效,不接受菜鸟们的技术帮助请求。

    2022年5月31日
    203

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号