printf %*s解决思路
printf %*sprintf(%*s%s, /*这里的参数应该是几个?*/);[解决办法]应该是3个.printf(%*s%s, 10, hello
printf %*s
printf("%*s%s", /*这里的参数应该是几个?*/);
[解决办法]
应该是3个.
printf("%*s%s", 10, "hello", "huanmie");
3.width 用于控制显示数值的宽度,取值和含义如下
n(n=1,2,3...) 宽度至少为n位,不够以空格填充
0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充
* 格式列表中,下一个参数还是width
---http://baike.baidu.com/view/410546.htm?fr=ala0_1_1
[解决办法]
是3个参数,%*s需要2个参数,其他跟普通一样
[解决办法]
最小域宽和精度限定符可以通过变元而不是常数提供给printf(),为了实现这一点,我们用*作为占位符。当编译器扫描到格式串时,printf()将*与变元串中的参数按顺序匹配!
C/C++ code#include <stdio.h>int main(void){ printf("%*.*f",10,4,1234.34); // 第一个*与10匹配,第二个*与4匹配。打印结果:1234.3400 return 0;}
[解决办法]
[解决办法]
[解决办法]
[解决办法]
22楼、22楼二位:抱歉了,那天匆忙,代码有误
printf("%-10.*s\n",k+1,"**********");/*-号左对齐,10.*起宽度控制,*放在小数点后*/
[解决办法]
22楼、27楼二位:抱歉了,那天匆忙,代码有误
printf("%-10.*s\n",k+1,"**********");/*-号左对齐,10.*起宽度控制,*放在小数点后*/
再给段新代码:
int k,n=10;
for(k=1;k<n;k++)
printf("%*.*s\n",k<n/2?k+n:2*n-k,k<n/2?2*k-1:2*(n-k)-1,"*******************");
输出的比上边的图案更复杂些,试试看。
[解决办法]
关键要区别scanf和printf里面的%*不是一个意思啊!