满意答案

a181415

2013.09.06

采纳率:56%    等级:12

已帮助:8800人

C语言里printf函数格式控制符的完整格式

printf的格式控制的完整格式:

% - 0 m.n l或h 格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

--------------------------------------------------------------------------------

格式字符

格式字符用以指定输出项的数据类型和输出格式。

①d格式:用来输出十进制整数。有以下几种用法:

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld:输出长整型数据。

②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。

例:

main()

{ int a = -1;

printf("%d, %o", a, a);

}

运行结果:-1,177777

程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。

③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。

④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。

⑤c格式:输出一个字符。

⑥s格式:用来输出一个串。有几中用法

%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。

%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

⑧e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

--------------------------------------------------------------------------------

关于printf函数的进一步说明:

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:

printf("%f%%", 1.0/3);

输出0.333333%。

--------------------------------------------------------------------------------

对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.

对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位.

拾遗

由高手指点

对于m.n的格式还可以用如下方法表示(例)

char ch[20];

printf("%*.*s\n",m,n,ch);

前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

今天(06.6.9)又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:

int slen;

printf("hello world%n", &slen);

执行后变量被赋值为11。

又查了一下, 看到一篇文章(查看)说这种格式输出已经确认为一个安全隐患,并且已禁用。再搜搜果然这种用法都被用来搞什么溢出、漏洞之类的,随便找了一个:格式化字符串攻击笔记

特别注意下%*.*s这种用法

18分享举报

c语言语句的使用形式,C语言如何使用print语句相关推荐

  1. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx

    1. 1.问题分析2.设计算法3.编写程序4.对源程序进行编辑.编译和连接5.运行程序,分析结 6.编写程序文档 第一章程 序 设 计 和C 语 言 1.1.什么是计算机程序 程序:一组计算机能识别和 ...

  2. c语言函数大全表格形式,C语言函数大全[表格形式].doc

    C语言函数大全[表格形式].doc 目 录 1.字符函数,所在函数库为ctype.h--------------------------2 2.数学函数,所在函数库为math.h.stdlib.h.s ...

  3. 在c语言中阿储存形式,c语言学习与阿复习课件2.ppt

    c语言学习与阿复习课件2 2.1 简单C语言程序的构成和格式 以下是一个简单求解两数之和的C程序, 程序如下: #include "stdio.h" main() { int a, ...

  4. c语言double数据存储形式,C语言 float、double数据在内存中的存储方式

    float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...

  5. c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型

    摘要: 语言变有半裙大头针别样时采用的是大约( )度斜向下别针法.使用椭圆工具拖出正圆形时,存储需要按住的快捷键是在下面的文件格式中,型f型和型常用于网页中的图像制作的是... 语言变有半裙大头针别样 ...

  6. c语言列指针的形式,C语言:行指针和列指针

    本文主要介绍C语言二维数组中的行指针及列指针,目的是为了搞清二维数组或更高维数组在作为函数参数进行传递时,考虑到代码的可复用性及软件最小权限原则,如何声明该形式参数.学习笔记,仅供参考,如有错误,敬请 ...

  7. c语言do while什么意思,C语言中do while语句的一般形式是什么

    C语言中do while语句的一般形式是什么 发布时间:2020-07-07 13:54:36 来源:亿速云 阅读:136 作者:清晨 小编给大家分享一下C语言中do while语句的一般形式是什么, ...

  8. c语言中if条件语句说课内容,if语句-ppt-说课--试讲-C语言.ppt

    数学与计算机学院计算机科学与技术龙昌海,c语言--if语句,教材分析,教材分析,1.教材的地位和作用<条件选择语句if>这一节位于本书第五章第二节,我所说的是第一课时.选择语句if是整个课 ...

  9. c语言高函数正确形式,计算机二级C语言考点解析:函数

    小编所收集到的相关计算机二级C语言考点解析:函数的资料 大家要认真阅读哦! 一.库函数的正确调用 1.C语言提供了丰富的库函数,包括常用数学函数.对字符和字符串处理函数.输入输出处理函数等.在调用库函 ...

最新文章

  1. (少儿教育) 数学-培训计划
  2. 前后端分离 集群负载均衡 分布式 微服务
  3. 面试请不要再问我Spring Cloud底层原理
  4. 3DSlicer26:Add Extension/Module filepath,no module named ...
  5. 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法
  6. “非”天才女程序员的人生
  7. CF848C Goodbye Souvenir
  8. Java 9对可选的补充
  9. Oracle的列转行问题
  10. 一张倾斜图片进行矫正 c++_专业性文章:10分钟矫正骨盆前倾
  11. python文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...
  12. Yum 安装 mysql5.7
  13. Redmi K50标准版工信部入网:搭载骁龙870 没有12GB内存
  14. 学习和研究下unity3d的四元数 Quaternion
  15. linux子系统的初始化_subsys_initcall()【转】
  16. Ubuntu 各版本号和名称对照
  17. 使用esp8266前的网络基础
  18. python程序设计基础上机题5.16-----5.26(2)
  19. C++将一个无效参数传递给了将无效参数视为严重错误的函数
  20. 本机使用跳板机远程连接要使用的服务器

热门文章

  1. 一文讲透数仓临时表的用法
  2. 如何通过虚拟私有云保障服务安全【华为云分享】
  3. 机器学习笔记(五)---- 决策树
  4. 【Python3网络爬虫开发实战】1.5.2-PyMongo的安装
  5. 【华为敏捷/DevOps实践】2. Wiki凭什么持续得到开发人员和团队的喜爱
  6. 福建农商银行计算机类笔试题目,2020年福建福州农商银行免笔试面试试题
  7. mysql获取option的value_js获取下拉列表框option中的value和text的值示例代码
  8. 数据结构之堆与优先队列
  9. 基于Matlab的跨孔CT胖射线追踪算法(三)
  10. java表达式的类型_java – 此表达式的目标类型必须是功能界面