相关文章推荐
博学的显示器  ·  C# WinForm中ListView ...·  7 月前    · 
寂寞的山楂  ·  Sharepoint2019 Unable ...·  11 月前    · 
坏坏的山羊  ·  [Python] ...·  1 年前    · 

一般在处理时间的时候,界面上显示,打印输出这些场景下,左边补0或者补空格占位是很常见的。

补0或者补空格之后,长度是固定的;这样显示更加美观、不会因为数字变短、变长造成闪烁感。

示例代码:

int main()
	printf("%d\n",12345);    //正常打印
	printf("%10d\n",12345);  //右对齐.位数不够,左边自动补空格
	printf("%-10d,%c\n", 12345,'A');//左对齐.位数不够,右边自动补空格
	printf("%010d\n",12345);  //右对齐.位数不够,左边自动补0
	//sprintf用法一样.
	return 0;
输出结果:
12345
     12345
12345     ,A
0000012345

在vs2017里使用sprintf需要在属性--C/C++---预处理器---增加 (_CRT_SECURE_NO_WARNINGS)

案例: 将ms时间转为时分秒.  控制位数

std::string MStoString(long nMicroSecond)
	int second = nMicroSecond / 1000;
	int hours, mins, secs, minSecs;
	secs = second % 60;
	mins = (second / 60) % 60;
	hours = second / 3600;
	minSecs = nMicroSecond - (hours * 3600 + mins * 60 + secs) * 1000;
	char buff[1024];
	//sprintf数字补0
	sprintf(buff,"%02d:%02d:%02d.%02d", hours, mins, secs, minSecs);
	std::string strTime = buff;
	return strTime;
int main()
	printf("%s\n", MStoString(50000).c_str());
	return 0;
                                    printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintfprintf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintfprintf有用得多。所以本文着重介绍sprintf,有时也穿插着用用 pritnf。sprintf是个变参函数,定义如下:int sprintf( char *buffer, cons
1.1.1 格式化输入输出函数   
Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和    
scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。
                                    sprintf函数的用法1、该函数包含在stdio.h的头文件中。 
2、sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中(要注意字符串的长度要足够容纳打印的内容,否则会出现内存溢出),而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。 
3、sprintf函数的格式: 
int sprintf(
                                    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintfprintf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintfprintf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argum
                                    sprintf()是个变参函数,定义格式如下:
int sprintf( char *buffer, const char *format [, argument] … );
精华显然在于第二个字符串:格式化字符串
1.格式化数字字符串
sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代itoa(把一个整数转换为字符串)。
//把整数打印成一个字符串并保存在字符串中
sprintf(str,"%d",890);
//可以指定宽度,不足的左边空格
                                    关于 %f 格式化输出,网上 大部分资料讲解都很模糊。这里总结一下!
问题1. %m.nf是什么意思?
最笼统的回答是:总共输出 m 位,其中小数占 n 位,右对齐,总计不足 m 位则左端空格。
问题2. m 位包含小数点么?
答:包含。C语言中,数据输出宽度包括小数点。
问题3. %f 如何实现左对齐?
答:使用 %-f。
问题4. 如果不足 m 位,如何实现零或其他内容?
答:可以使用 %0m.nf 格式,如果想要其他内容,则将其他内容代替上述格式中的“0”。
问题5. 我想强制 %f 输出正负
  sprintf 将字串格式化。
  在头文件 #include<stdio.h>中
  语法: string sprintf(string format, mixed [args]...);
  传回值: 字串
  1. 处理字符方向。-负号时表时从后向前处理。 
  2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示...