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 "解释:
- %:开始符。
- 0 是 “填空字元” 表示,如果长度不足时就用0来填满。
- 8 格式化后总长度。
- 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,无错误返回。