简述:printf、sprintf函数

转载自http://www.cnblogs.com/adslg/archive/2008/08/22/1274164.html 部分进行了修改,参考http://www.cplusplus.com/reference/cstdio/printf/?kw=printf

printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息,调用格式为:printf("<格式化字符串>", <参量表>);其中格式化字符串包括两部分内容:
1.正常字符。这些字符将按原样输出;
2.格式化规定字符。以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","隔开,且顺序一一对应,否则将会出现意想不到的错误。

格式化规定符如下:
%d    十进制有符号整数
%u    十进制无符号整数
%f    浮点数
%s    字符串
%c    字符
%p    指针的值
%e    指数形式的浮点数
%x, %X    十六进制表示的无符号整数
%0    八进制表示的无符号整数
%g    自动选择合适的表示法

1.可以在"%"与字母之间插进数字表示最大场宽,例如"%3d"表示输出3位整型数,不够3位右对齐;"%9.2f"表示输出场宽为9的浮点数,其中小数位2位,整数位6位,小数点占一位,不够9位右对齐;"%8s"表示输出8个字符的字符串,不够8个字符右对齐。
对于整型数或者字符串,如果长度超过说明的场宽,则按实际长度输出;
对于浮点数,如果整数部分的长度超过说明的场宽,则按实际整数位输出;如果小数部分的长度超过说明的小数位宽度,则按说明的小数位宽度四舍五入输出。

.precison
For integer specifiers (d, i, o, u, x, X): precision specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer. A precision of means that no character is written for the value .
[对于整型数,precision表示要显示的最小长度,如果整型数的长度比precision小,则会自动添加前导零;如果整型数的长度比precision大,则按实际长度输出]
For a, A, e, E, f and F specifiers: this is the number of digits to be printed after the decimal point (by default, this is ).
[对于浮点数,precision表示表示小数位的位数,默认情况下为6位]
For s: this is the maximum number of characters to be printed. By default all characters are printed until the ending null character is encountered.
[对于字符串,precision表示要打印的字符串长度]

2.如果想在输出值前加一些0,就应在场宽项前加个0,例如"%04d"表示在输出一个小于4位的整型数时,将在前面补0使其总宽度为4位。
3.可以在"%"与字母之间加小写字母l表示输出的是长型数,例如"%ld"表示输出长整型数,"%lf"表示输出double类型的浮点数。
4.可以在"%"与字母之间加"-"表示输出为左对齐,例如"%-7d"表示输出7位整数左对齐

一些特殊规定字符
\n    换行
\r    回车
\t    Tab符
\f    清屏并换页
\xhh    用十六进制表示一个ASCII码,其中hh是1到2个16进制数

#include <stdio.h>
#include <string.h> int main()
{
char c, s[], *p;
int a = , b=, *i;
float f=3.141592653589f;
double x = 0.12345678987654321;
p = "How do you do";
strcpy(s, "Hello, Comrade");
i = &b;
c = '\x41'; printf("a=%d\n", a); /*结果输出十进制整数a=1234*/
printf("a=%6d\n", a); /*结果输出6位十进制数a= 1234*/
printf("a=%06d\n", a); /*结果输出6位十进制数a=001234*/
printf("a=%2d\n", a); /*a超过2位, 按实际值输出a=1234*/
printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/
printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/
printf("i=%p\n", i); /*输出地址i=06E4*/
printf("f=%f\n", f); /*输出浮点数f=3.141593*/
printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数f=3.1416*/
printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/
printf("x=%18.16lf\n", x); /*输出18位其中小数点后16位的长浮点数x=0.1234567898765432*/
printf("c=%c\n", c); /*输出字符c=A*/
printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/
printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello, Comrade*/
printf("s[]=%6.9s\n", s); /*输出最多9个字符的字符串s[]=Hello, Co*/
printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/
printf("*p=%s\n", p); /* 输出指针字符串p=How do you do*/
printf("p=%p\n", p); /*输出指针的值p=0194*/ getchar();
return ;
}
/*
int sprintf ( char * str, const char * format, ... ); Write formatted data to string
[将格式化数据写入到string中]
Composes a string with the same text that would be printed if format was used on printf, but instead of being printed, the content is stored as a C string in the buffer pointed by str.
[不同于printf()的将格式化数据输出到标准输出设备上,sprintf()是将格式化数据保存在一个C字符串缓冲中]
The size of the buffer should be large enough to contain the entire resulting string (see snprintf for a safer version).
[字符串缓冲的大小应该大到足以包含所有的结果字符串]
A terminating null character is automatically appended after the content.
[sprintf()函数会自动添加一个null作为字符串结束符]
After the format parameter, the function expects at least as many additional arguments as needed for format.
[sprintf()中参量表的个数需要与格式化规定符的个数一一对应,且数量相等] Return Value
On success, the total number of characters written is returned. This count does not include the additional null-character automatically appended at the end of the string.
[如果成功,则返回被写入的字符总数(不包含自动添加null结束符)]
On failure, a negative number is returned.
[如果失败,则返回一个负数]
*/ #include <stdio.h> int main()
{
char buffer[];
int n, a=, b=;
n = sprintf(buffer, "%d plus %d is %d", a, b, a+b);
printf("[%s] is a string %d chars long.\n", buffer, n); getchar();
return ;
}

C中的一些函数的更多相关文章

  1. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  2. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  3. Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数

    11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...

  4. 函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法

    1. 用法一 LOCATE(substr,str) POSITION(substr IN str) 函数返回子串substr在字符串str中第一次出现的位置.如果子串substr在str中不存在,返回 ...

  5. 借助JavaScript中的时间函数改变Html中Table边框的颜色

    借助JavaScript中的时间函数改变Html中Table边框的颜色 <html> <head> <meta http-equiv="Content-Type ...

  6. EC笔记,第二部分:9.不在构造、析构函数中调用虚函数

    9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...

  7. PHP中的回调函数和匿名函数

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  8. 为什么print在python3中变成了函数?

    转自:http://www.codingpy.com/article/why-print-became-a-function-in-python-3/ 在Python 2中,print是一个语句(st ...

  9. js高级程序设计书中,有一句话在全局作用域中定义的函数实际上只 能被某个对象调用???

    js没有块级作用域(题外话:函数可以作为一个块级),所以我们经常使用闭包来模拟块级作用域,以避免变量或者函数因为名称相同而产生的冲突. 重点来了: 所以,如果我们把哪个变量或者函数放在全局作用域中,那 ...

  10. 在VBA中调用excel函数

    以前不太会用VBA时,都是在excel中使用函数来计算一些数据.毕竟函数不如代码,效率比较低.所以,就学着怎么在VBA中引用Excel函数.平时我用得比较多的函数就是countif和sumif函数.1 ...

随机推荐

  1. 0511 backlog 项目管理

    SCRUM 这次的作业就是确定SCRUM的计划,确定sprint backlog的一个冲刺周期,而这个周期是两个星期.争取在两周内发布1.0版本. 本次作业以网站构建为主: ID       NAME ...

  2. Android IOS WebRTC 音视频开发总结(二九)-- 安卓噪声消除交流

    Android上的音质一直被大家所困扰和诟病,这里面有很多原因, 下面是最近一位前UC同行发邮件跟我交流的一些记录,供参考,支持原创,文章来自博客园RTC.Blacker,转载请说明出处. 以下文字来 ...

  3. AnyCAD C++ SDK与OpenCASCADE互操作

    AnyCAD SDK有.Net和C++两个版本,使用C++版本的AnyPlatformOcc模块可以实现与OpenCASCADE互操作. C++版本(VS2010 32bit)下载 在AOBridge ...

  4. atexit注册的函数是在main函数之后执行?

    跟atexit函数相识已久,man手册里对atexit的解释是这么一段: The atexit() function registers the given function to be called ...

  5. centos下网络的基本配置方法讲解

    上一篇中我们已经成功安装了我们的centos系统,但是我们可能发现我们安装的centos上不了网,所以这一章我们来说说如何配置centos来连接外网和局域网. 我们首先来认识一下linux下部分网络配 ...

  6. read 不回显的方法

    方法就是: stty -echo #设置输入字符不回显 #此处用read语句接收用户输入的内容 stty echo #取消不回显状态 stty erase '^H'

  7. 软件工程 speedsnail 第二次冲刺5

    20150522 完成任务:蜗牛帧数变化已经实现,行走的蜗牛具有了动态的视觉效果: 遇到问题: 问题1 帧数大小根据人眼来设置 解决1 除29余0到14的为第一帧 明日任务: 蜗牛碰撞身体翻转

  8. HTML的结束标签问题

    根据w3c的原则,xml的每个开始标签必须有一个结束标签与之对应,也就是<html>必须要有</html>结束,才是一个完整的元素,除非它是一个自封闭标签,自封闭就是<i ...

  9. WordPress 主题开发 - (六) 创建主题函数 待翻译

    We’ve got a file structure in place, now let’s start adding things to them! First, we’re going to ad ...

  10. B-树

    定义: B-树是一种平衡的多路查找树,在文件系统中有所应用.主要用作文件的索引. 特性:(M为层数) 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3. ...