`

printf "%.*s"

    博客分类:
  • VC++
阅读更多

 

 

留着以后仔细研究

 

FROM:http://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html

 

 

printf "%.*s"

 

 

小数点.后“*”表示输出位数,具体的数据来自参数表
printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。

同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。

复制代码
#include <cstdio>
#include <iostream>

int main()
{
char *s = "this is test example";
int a,b;
printf("%.*s\n", 10, s);//这里的常量10就是给*号的,你也可以用一个变量来控制宽度
printf("%*.*s\n", 20, 10, 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("* carrys 2 persons each time.In passing the river,at any bank *\n"); printf("* number of men must be more than the number the rateiners , *\n"); printf("* or the rateiners will kill the men...

    GIT2.33.0.2最新版本.zip

    Git 2.33 Release Notes ====================== Updates since Git 2.32 ... * Many "printf"-like helper functions we have have been annotated with __attribute__() to catch placeholder/parameter

    opensc-0.12.0.tar.gz

    * Modify Rutoken S binary interfaces by Aktiv Co. * Support GOST R 34.10-2001 and GOST R 34.11-94 by Aktiv Co. * CardOS driver now emulates sign on rsa keys with sign+decrypt usage with padding and ...

    Printf输出格式.

    printf输出格式 格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE % - 5S A#### ABC## ABCDEFGH

    C语言日历综合

    printf("%*cMENU",20,' '); printf("\n%*c1. Is it a leap year?",10,' '); printf("\n%*c2. What day is it anyday?",10,' '); printf("\n%*c3. Print any month's calendar!",10,' '); printf("\n%*c4. Exit...

    c代码-输入总秒数,转换为相应的时、分、秒。提示:在输出时,请使用下面的格式(变量名不要求一样)printf("%d:%.2d:%.2d\n", h, m, s) 输入:整数 输出:时分秒,整数,西文冒号分隔。

    c代码-输入总秒数,转换为相应的时、分、秒。提示:在输出时,请使用下面的格式(变量名不要求一样)printf("%d:%.2d:%.2d\n", h, m, s) 输入:整数 输出:时分秒,整数,西文冒号分隔。

    c++学生成绩管理

    printf("\t%s\t%s\t%5.1f\t%5.1f\t%5.1f\t%6.2f\n",stu[iStudent].name,stu[iStudent].number,stu[iStudent].sub1,stu[iStudent].sub2,stu[iStudent].sub3,stu[iStudent].aver); } int i_max=1; float max_aver=...

    C语言仓库管理系统课设

    goods s[M]; //用于存放货品信息 goods r[M]; //用于存放入库货品信息 goods t[M]; //用于存放出库货品信息 void Re_file(); //读入原始库存文件 void Stock_in(); //读入入库文件 void Stock_out(); ...

    js扩展基础类

    * 格式化字符串${0} -&gt; 参考printf %s **/ String.prototype.format = function() { var args = arguments; return this.replace(/\$\{(\d+)\}/g, function(m, i){ return args[i]; });...

    局程控制交换机

    printf(欢迎使用s1240交换机数据采集系统); printf("* *"); printf("* 请选择您所需要的操作 *"); printf("* *"); printf("* 0:码制转换 *"); printf("* 1:数据校验 *"); printf("* 2:数据排序 *"); printf...

    深入了解计算机系统导论lab1

    You can still use printf for debugging without including * &lt;stdio.h&gt;, although you might get a compiler warning. In general, * it's not good practice to ignore compiler warnings, but in this * ...

    Oracle如何直接运行OS命令(下)第1/2页

    正在看的ORACLE教程是:Oracle如何直接运行OS命令(下)。... printf(”%.*s\n”, msg_length, msg_buffer); printf(”Daemon quitting.\n”); exit(1); } void sql_error() { char msg_b

    教 师 工 作 量 管 理 系 统

    printf("教师姓名:%s\n",p-&gt;teacher_name); printf("----------------------------------------------------------------------\n"); printf("课程名称 班级数目 理论课时 实验课时 单教学任务总课时\n"); ...

    C/C++ 拳皇争霸

    printf("\n%s使用连招攻击%s\n",player[i].name,player[j].name); s=rand()%100*2; player[j].Hp-=s; printf("%s受到%d点伤害\n\n",player[j].name,s); break; case 2: printf("\n%s释放超杀技\n",...

    结构体排序查找以及链表的使用

    printf("%d %.2lf %s\n",p-&gt;num,p-&gt;score,p-&gt;name); p=p-&gt;next; } qsort(s,n,sizeof(s[0]),cmp); head=&s[0]; for(i=1;i;i++) s[i-1].next=&s[i]; s[n-1].next=NULL; p=head; while(p) { ...

    C语言编程宝典(学习C的朋友来下载吧)

    对刚学习C的朋友有很好的帮助哦 看下例子 函数名: cabs 功 能: 计算复数的绝对值 用 法: double cabs(struct complex z);... printf("String is %s\n", str); /* free memory */ free(str); return 0; }

    vtysh源码,一个类似于zebra的本地shell

    printf("Ver:%s %s\n", __DATE__, __TIME__); exit(0); default: usage (argv[0], 1); break; } } /* Signal and others. */ signal_init (); /* Init config. */ config_init(); /* Init the cmd */...

Global site tag (gtag.js) - Google Analytics