码迷,mamicode.com
首页 > 其他好文 > 详细

C中的一些函数

时间:2015-07-09 17:57:04      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

简述: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;
}

C中的一些函数

标签:

原文地址:http://www.cnblogs.com/kevinq/p/4633731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!