C语言中sprinf函数的应用

C语言中sprinf函数的应用

===================================

===================================

第1章

1.1 所属头文件

该函数包含在 stdio.h 的头文件中,使用时需添加。

#include"stdio.h" //头文件

1.2 sprintf函数和printf函数的区别

sprintf和printf函数的功能很相似。

1.2.1 sprintf函数功能

sprintf函数打印到字符串中(要注意字符串的长度要足够容纳打印的内容,否则会出现内存溢出)。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。

1.2.2 printf函数功能

printf函数打印输出到屏幕上。

1.3 sprintf函数的格式

int sprintf( char *buffer, const char *format [, argument,] );

说明:

除了前两个参数固定外,可选参数可以是任意个。
buffer是字符数组名;
format是格式化字符串(如:“%3d%6.2f%#x%o”,当%与#合用时,自动在十六进制数前面加上0x);

只要在printf中可以使用的格式化字符串,在sprintf都可以使用。其中的格式化字符串是此函数的精华。

printf 和sprintf都使用格式化字符串来指定字符串的格式,在格式串内部使用一些以"%"开头的格式说明符来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。

转换字符:

%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。

1.4 sprintf控制精度

sprintf (“%08.2f”, money);

其中" %08.2f "解释:

  1. %:开始符。
  2. 0 是 “填空字元” 表示,如果长度不足时就用0来填满。
  3. 8 格式化后总长度。
  4. 2f 小数位长度,即2位。

易错点:

//错误的写法:
char  buffer[100];
int num = 10;
sprintf(buffer,  "%.2f", num);      ///这种做法是不对的, 按照压栈顺序, 在压入num前,根本不知道
                                              格式化是保留两位精度, 这样在会导致结果混乱, 为0.00;
//正确的写法:
char  buf[100];
int num = 10;
sprintf(buf,  "%.2f",double)num);

常用转换:

money = 123.1
formatted = sprintf ("%06.2f", money); // 此时变数 $ formatted 值为 "123.10"
formatted = sprintf ("%08.2f", money); // 此时变数 $ formatted 值为 "00123.10"
formatted = sprintf ("%-08.2f", money); // 此时变数 $ formatted 值为 "123.1000"
formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比

1.5 使用sprintf函数进行格式化

在需要将数据从一种格式转换为另外一种格式时,sprintf函数较为常用。具体应用有在嵌入式开发中如果需要将数据显示在屏幕上,需要将数据转换为字符串,sprintf函数可以完成此功能。

除了sprintf函数之外,还有 itoa()函数可以把整数转换成字符串,并返回指向转换后的字符串的指针。

1.5.1 itoa()函数应用

itoa()函数包含在下面头文件:

    #include <string.h>

itoa()函数的格式:

itoa():char *itoa( int value, char *string,int radix);

原型说明:
value:欲转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。

功能:将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)。
返回值:函数返回一个指向 str,无错误返回。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值