标签:
简述:printf、sprintf函数
转载自http://www.cnblogs.com/adslg/archive/2008/08/22/1274164.html
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个字符右对齐。
对于整型数或者字符串,如果长度超过说明的场宽,则按实际长度输出;
对于浮点数,如果整数部分的长度超过说明的场宽,则按实际整数位输出;如果小数部分的长度超过说明的小数位宽度,则按说明的小数位宽度四舍五入输出。
如果用浮点数表示字符或者整型数的输出格式,则小数点后的数字代表最大场宽,小数点前的数字代表最小场宽,例如"6.9s"表示显示一个长度不小于6且不大于9的字符串,如果字符串长度大于9,则第9个字符之后的内容将被删除。
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[20], *p; int a = 1234, b=12, *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 0; }
/* 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[50]; int n, a=5, b=3; 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 0; }
标签:
原文地址:http://www.cnblogs.com/kevinq/p/4633731.html