一般在处理时间的时候,界面上显示,打印输出这些场景下,左边补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的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。所以本文着重介绍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 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。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;空格是内定值,表示...