自己控制打印的宽度和小数位数,这时就应该使用:“%m.nf”格式,其中m表示打印的宽度,n表示小数点后的位数。比如:

1

2

3

sprintf(s, "%10.3f", 3.1415626);    // 产生:"     3.142″

sprintf(s, "%-10.3f", 3.1415626);   // 产生:"3.142     "

sprintf(s, "%.3f", 3.1415626);      // 不指定总宽度,产生:"3.142"

sprintf(s, "%.7s%.7s", a1, a2);

这可以类比打印浮点数的“%m.nf”,在“%m.ns”中,m表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m没什么大用,还是点号后面的n用的多。自然,也可以前后都只取部分字符:

1

sprintf(s, "%.6s%.5s", a1, a2); // 产生:"ABCDEFHIJKL"

在许多时候,我们或许还希望这些格式控制符中用以指定 长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在 sprintf 的实现中也被考虑到了,sprintf 采用“*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以 和其它被打印的变量一样被提供出来,于是,上面的例子可以变成:

1

sprintf(s, "%.*s%.*s", 7, a1, 7, a2);

或者:

1

sprintf(s, "%.*s%.*s"sizeof(a1), a1, sizeof(a2), a2);

实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:

1

2

3

sprintf(s, "%-*d", 4, 'A');             // 产生 "65 "

sprintf(s, "%#0*X", 8, 128);            // 产生 "0X000080″,"#"产生0X

sprintf(s, "%*.*f", 10, 2, 3.1415926);  // 产生"      3.14″

sprintf %m.ns %m.nf相关推荐

  1. printf中%m.nd, %m.ns, %m.nf的输出规则

    %m.nd:m代表输出一共占m列,不够m列前面补空格,够m列不作任何处理,n代表这个数一共要有n列,不够前面补0,够n列不做任何处理 int main() {int a = 123;printf(&q ...

  2. ns的安装与使用及tcl的入门学习

    1 安装linux (1)windows下删除卷,为安装linux提供空间 (2)下载ubantuISO文件,通过ultraISO刻录到U盘 (3)按照网上教程分配空间,完成linux安装 2 安装N ...

  3. NS2仿真:使用NS仿真软件模拟简单网络模型

    NS2仿真实验报告1 实验名称:使用NS仿真软件模拟简单网络模型 实验日期:2015年3月2日~2015年3月7日 实验报告日期:2015年3月8日 一.实验环境(网络平台,操作系统,网络拓扑图) 运 ...

  4. 向NS2中添加协议PING

    在NS2中增加自己的协议模块一般分一下几个步骤: (1)       添加协议类 (2)       定义协议分组头结构 (3)       编译代码 其实在ns3.35版本中已经有ping协议,此步 ...

  5. 使用ns2仿真ping

    费了好大劲,终于按照ns-2官网的tutorial( http://www.isi.edu/nsnam/ns/tutorial/nsnew.html ) 完成了第一个简单的demo:ping程序的仿真 ...

  6. 向NS2中添加协议PING[转载]

    原文地址:http://www.cnblogs.com/xyl-share-happy/archive/2012/03/20/2407732.html ------------------------ ...

  7. 数据结构排序算法实验报告_数据结构与算法-堆排序

    堆排序 堆排序是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点,堆排序的时间复杂度为O(nlogn).( ...

  8. 如何新增或修改ns2的核心模組--queue management

    原文地址 :http://140.116.72.80/~smallko/ns2/module.htm 這個章節最主要的目的就是希望使用者可以學會如何新增或修改ns2的核心模組,更明確的說就是去新增和修 ...

  9. set class_ x set fid_ x

    关于 set class_ x , set fid_ x  网络上有一些解释. http://blog.csdn.net/wanghui_one/archive/2009/03/12/3985331. ...

最新文章

  1. 一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向
  2. gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
  3. Linux设备模型组件-类设备-设备类及subsystem
  4. Swift - 自定义单元格实现微信聊天界面
  5. C++知识总结(1)--变量和基本类型
  6. 马上开课 | 第 3 期临床基因组家系分析,助力发表Case Report
  7. 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...
  8. python 单向链表
  9. c++ floor 赋值_C++之floor函数
  10. python 清华镜像_树莓派raspberry4B入坑指南 part-1 virtualenv安装python
  11. 【算法学习笔记】18:树与图的DFS与BFS
  12. R语言isprime函数素数(prime number)判断实战
  13. 外汇EA真的有用吗?外汇EA如何设置
  14. 我写过的软件之TSE-工作流程和实现
  15. HTTPClient网络异常:java.lang.IllegalStateException: Content has been consumed
  16. 数学运算 - 心算加减法
  17. 使用Java导出Excel表格并由浏览器直接下载——基于POI框架
  18. h5调起QQ客服的坑(PC端、移动端)
  19. java 判断日期是同一天_java判断两个日期是否同一天的方法
  20. Ghost使用及找不到Ghostree.txt文件问题

热门文章

  1. 冷热水恒压供水系统,变频器控制,模拟量输入和输出处理,温度控制,流量计算控制
  2. 《精通QTP——自动化测试技术领航》—第1章1.5节QTP精华—对象库(上)之基础攻略篇...
  3. 剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法
  4. 2014-2015-2试题
  5. 真的,我发誓,永远都不会在代码中使用“User”这个单词! - Js中文网
  6. TryHackMe-Archangel
  7. linux虚拟机redis连接报错
  8. 6.0、C语言——递归函数
  9. 算法题解之寻找最大的k个数
  10. 深耕Java多线程 - 死锁、活锁、饥饿