简述: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. POJ 1195

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 13774   Accepted: 6393 De ...

  2. s3c6410_uart初始化及读写

    参考: 1)<USER'S MANUAL-S3C6410X>第31章 UART 2)u-boot uart初始化及读写:u-boot-x.x.x/board/samsumg/smdk641 ...

  3. eclipse 中maven项目右键没有maven菜单问题

    修改项目.project文件,确保有maven2Builder和maven2Nature2个标签: <?xml version="1.0" encoding="UT ...

  4. 判断手机,pc方式登录

     <script type="text/javascript">         function browserDetect() {             var  ...

  5. Objective-C介绍

    概述 2007年苹果公司推出了Objective—C 2.0,它是Mac OS X和iOS开发的基础语言.

  6. synchronized的重入

    /** * synchronized的重入 * */ public class SyncDubbo1 { public synchronized void method1(){ System.out. ...

  7. js JSON对象属性

    json对象是是一种用于原生json分析的对象,无法对其进行构造函数调用,用java术语 来说,它相当于能够直接使用类方法的工具类JSON对象的属性parse(text[,reviver]);对参数t ...

  8. mysql列属性auto(mysql笔记四)

    常见的的是一个字段不为null存在默认值 没值得时候才去找默认值,可以插入一个null到 可以为null的行里 主键:可以唯一标识某条记录的字段或者字段的集合 主键设置 主键不可为null,声明时自动 ...

  9. (转)Android系统自带Activity样式(@android:style/)

    在AndroidManifest.xml文件的activity中配置 1.android:theme="@android:style/Theme" 默认状态,即如果theme这里不 ...

  10. java中4中类修饰符访问范围

    public:本类中可见,同包中可见,子类中可见,其他包中可见. protected:本类中可见,同包中可见,子类中可见,其他包不可见. 默认:本类中可见,同包中可见,子类不可见,其他包不可见. pr ...