printf ("%*.*s")
小数点.后“*”表示输出位数,具体的数据来自参数表
printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。
同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。

#include <cstdio>
#include <iostream> int main()
{
char *s = "this is test example";
int a,b;
printf("%.*s\n", , s);//这里的常量10就是给*号的,你也可以用一个变量来控制宽度
printf("%*.*s\n", , , s);//常量20控制输出所占位宽,也可以用一个变量控制
std::cin>>a>>b; //输入15 10
printf("%*.*s\n", a, b, s);//输出为:-----this is te
std::cin.get();
std::cin.ignore();//暂停程序执行
}

输出结果为:
this is te
----------this is te//-代表空格
15 10 //输入
-----this is te
注:printf的一般形式为printf("格式控制字符串",输出列表),格式控制字符串形式为:[标志][输出最小宽度][.精度][长度]类型。
其中方括号[]中的项为可选项。 各项的意义介绍如下:
1)类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀 0)
x,X 以十六进制形式输出无符号整数(不输出前缀 Ox)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f 或%e 中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
2)标志:标志字符为-、+、#、空格四种,其意义下表所示:
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)
空格 输出值为正时冠以空格,为负时冠以负号
# 对 c,s,d,u类无影响;对 o 类,在输出时加前缀 o;对 x 类,在输出时加前缀 0x;对 e,g,f 类当结果有小数时才给出小数点
3)输出最小宽度:用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或 0。
4)精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
5)长度:长度格式符为 h,l 两种,h 表示按短整型量输出,l 表示按长整型量输出。
printf ("%*.*s")的更多相关文章
- C语言: 运算符,printf,scanf的用法
运算符/的运算结果和运算对象的数据类型有关,两个数都是in,则商就是int,取整数部分:被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不去掉小数部分如:16/5 == 3:16/5.0 ...
- printf和scanf
一 printf和scanf(printf和scanf是c语言中的输入输出库函数) printf(”格式控制“,输出列表) <1>格式控制 其中包含 格式声明(%+相应格式对应字母).转义 ...
- 关于 printf() 函数的三张表格
函数原型: printf(Control-String, item1, item2, ...); 表一 转换说明符及作为结果的打印输出 转 换 说 明 输 出 %a 浮点数.十六进制数字和p- ...
- printf对齐
C语言中,将printf函数打印出的字符像表格一样分类对齐.%-10d表示这个字符型占10个字节,负号表示左对齐.即下面表格中的x1位置开始填充.如果是%10d,表示右对齐,即在x10位置对齐. x1 ...
- win10控制台程序printf死锁问题
昨天遇到一个奇葩的问题,服务器正常运行但经常出现客户端无法连接的问题.我很好奇,在accept返回的地方断点,发现无法accept了.这就怪了,以前从没出现过这种情况.服务器网络用的asio,无法ac ...
- 可变参数列表与printf()函数的实现
问题 当我们刚开始学习C语言的时候,就接触到printf()函数,可是当时"道行"不深或许不够细心留意,又或者我们理所当然地认为库函数规定这样就是这样,没有发现这个函数与普通的函数 ...
- printf的特殊用法
printf的特殊用法:对于m.n的格式可以用如下方法表示 前边的 * 定义的是总的宽度,后边的 * 定义的是输出的个数.分别对应外面的参数m和n .这种方法的好处是可以在语句之外对参数m和n赋值 ...
- 关于printf错用格式化字符串导致double和long double输出错误的小随笔
[题外话] 以前用HUSTOJ给学校搭建Online Judge,所有的评测都是在Linux下进行的.后来为了好往学校服务器上部署,所以大家重新做了一套Online Judge,Web和Judge都是 ...
- 4-printf & scanf函数
一.printf函数 这是(printf和scanf)在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h> 1.用法 1> printf(字符串) ...
- C语言基础(5)-有符号数、无符号数、printf、大小端对齐
1.有符号数和无符号数 有符号数就是最高位为符号位,0代表正数,1代表负数 无符号数最高位不是符号位,而就是数的一部分而已. 1011 1111 0000 1111 1111 0000 1011 10 ...
随机推荐
- pgsql删除重复记录
如下: DELETE FROM categories a WHERE ( a.id, a.name, a.parent_id ) ) ) 关键点:oracle中有内部id为rowid, 在postgr ...
- spring-第十四篇之资源访问Resource接口
1.Resource接口提供的主要方法 1>getInputStream():定位并打开资源,返回资源对应的输入流.每次调用都返回新的输入流.调用者必须负责关闭输入流. 2>isOpen( ...
- #python# 使用代理和不使用代理对比
import urllib.request url='http://httpbin.org/ip' #不使用代理 response1=urllib.request.urlopen(url) #设置代理 ...
- CSRF相关
CSRF原理 第一次获取页面的时候浏览器返回一个随机字符串,之后提交数据的时候需要把到这个字符串去提交,不然会报错 返回的时候还会把这个字符串放到cookie里面, 使用form提交时候: {% cs ...
- owaspbwa tickets
owaspbwa tickets 来源 https://sourceforge.net/p/owaspbwa/tickets/ 192 SQL Injection in pic_id paramet ...
- node留言板开发————node.js
各位需要的话可以下载去看一下. 源码下载链接:https://download.csdn.net/download/weixin_41018304/11833778
- elasticsearch 基础 —— Field Collapsing字段折叠
允许根据字段值折叠搜索结果.通过按折叠键选择顶部排序文档来完成折叠.例如,下面的查询检索每个用户的最佳推文,并按喜欢的数量对它们进行排序. GET /twitter/_search { "q ...
- 2019-9-2-win10-uwp-打电话
title author date CreateTime categories win10 uwp 打电话 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17 ...
- Nginx学习总结:常用module(二)
斜体下划线,表示建议采用默认配置,无需显式的配置 一.ngx_core_module 1.accept_mutex [on | off] 上下文:events 默认为“on”,在wor ...
- Linux双网卡绑定bond详解
参考资料: 1.https://blog.csdn.net/shengerjianku/article/details/79221886