耳目一新|林林总总 涂鸦·电影·分享·碎碎念

格式化输出-输出变长字符串

2012-08-10

前几天读程序时看到“%*s”的格式化输出,一搜索才知道还有变长这种,真强大。搜索加整理了一下:

如下程序实例:

?Download printftest.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*testprintf.c*/
#include <stdlib.h>
 
void main()
{
	unsigned char TestStr[] = "this is a test";
 
	printf("%-20s[%s]\r\n", "1.%s", TestStr);
	printf("%-20s[%5s]\r\n", "2.%ms m=5", TestStr);
	printf("%-20s[%15s]\r\n", "3.%ms m=15", TestStr);
	printf("%-20s[%-5s]\r\n", "4.%-ms m=5", TestStr);
	printf("%-20s[%-15s]\r\n", "5.%-ms m=15", TestStr);
	printf("%-20s[%15.5s]\r\n", "6.%m.ns m=15 n=5", TestStr);
	printf("%-20s[%-15.5s]\r\n", "7.%-m.ns m=15 n=5", TestStr);
	printf("%-20s[%*s]\r\n", "8.%*s *=5", 5, TestStr);
	printf("%-20s[%*s]\r\n", "9.%*s *=15", 15, TestStr);
	printf("%-20s[%8*.*s]\r\n", "10.%*.*s *=15,5", 15, 5, TestStr);
}

 

输出结果如下:

printf输出结果

printf输出结果

总结:

1            %s 输出字符串,直到遇见字符串结束符。
2,3        %ms 输出的字符控制在m个屏幕像素,但此字符串长度大于给定参数,则全部输出。若长度不够,则默认右对齐。
4,5        %-ms 输出的字符控制在m个屏幕像素,但此字符串长度大于给定参数,则全部输出。若长度不够,则左对齐。
6            %m.ns 占m个屏幕像素,取字符串左端n个字符输出,右对齐。
7           %-m.ns 占m个屏幕像素,取字符串左端n个字符输出,左对齐。
8,9       %*s 与%ms功能相同,*表示输出位数,具体的数据来自参数表,由int型指定。
10        %*s 与%m.ns功能相同,*表示输出位数,具体的数据来自参数表,由int型指定。

如非特殊标明都是原创文章,版权所有congwong
转载请注明: 转载自播种幸福吧
本文链接地址: 格式化输出-输出变长字符串

上一篇:
下一篇:
作者:congwong | Categories:C/C++技术 | Tags: