Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162491
  • 博文数量: 41
  • 博客积分: 647
  • 博客等级: 上士
  • 技术积分: 366
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-29 14:13
文章分类

全部博文(41)

文章存档

2013年(11)

2012年(1)

2011年(29)

分类: C/C++

2011-09-19 17:07:23

sprintf() 格式化输出函数
功能: 函数sprintf()用来作格式化的输出。
用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);
说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。

sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代
itoa。

sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐

控制浮点数打印格式
浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保
留小数点后6 位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"
但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表
示打印的宽度,n 表示小数点后的位数。比如:
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"

sprnitf 还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也
是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为
了在出现问题时可以推卸责任吧。这里举个例子:
time_t t = time(0);
//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
sprintf 在MFC 中也能找到他的知音:CString::Format,strftime 在MFC 中自然也有她的同道:
CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。

听说函数sprintf()用来作格式化的输出的。
  
 
1、代码如下:
 
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main(void)
  4. {
  5.     char buffer[80];

  6.     sprintf(buffer, "An approximation of Pi is %f\n", M_PI);
  7.     printf("%s\n",buffer);
  8.     sprintf(buffer,"1111111111111111111111111111\n");
  9.     puts(buffer);
  10.     return 0;
  11. }

 

2、运行效果如下

 

  1. [root@localhost sprintf]# ./sprint
  2. An approximation of Pi is 3.141593

  3. 1111111111111111111111111111

  4. [root@localhost sprintf]#

 

   综上所述,得两点结论:

(1)、printf()和puts()可以实现同样的功能;

(2)、sprintf(),每次对buffer进行输出之前,都会将buffer清空。这点要切记!!!


阅读(1597) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:目录与分区关系

给主人留下些什么吧!~~