Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 【C++基础】sprintf使用的方法与printf的区别

首先我们在MSDN看一下printf的原型和sprintf的原型int printf( const char *format [, argument]... );和int sprintf( char *buffer, const char *format [, argument] ... );从定义来看两者的功能其实很相似的。如果你接触的控制台的程序较多的话,见到printf的比较多,printf函数打印结果到屏幕上,而sprintf函数可以完成其他数据类型转换为字符串。从以下几点来说明一下(1)函数的中前两个参数是固定外,可选参数是任意个,buffer是存放字符串指针或者数组名字,fromat是格式化字符串,只要是printf使用的格式化字符串,在sprintf都可以使用,格式化字符串是该函数的精髓。(2)首先可以把一个整型数据格式化为字符串。比如:char str[20];int i_arg = 12345;sprintf(buf,"%-6d",i_arg);(3)看一个浮点类型的例子。比如:char str[20];double d_arg = 3.1415926;sprintf(str,"%6.2f",d_arg);可以控制精度(4)连接两个字符串,也可以将多个字符串连接起来,%m.n在字符串的输出中,m表示宽度,字符串共占的列数;n表示实际的字符数。%m.n在浮点数中,m也表示宽度,n表示小数的位数。比如:char dest[256];char src1[] = {"a","b","c","d","e"};char src2[] ={"1","2","3","4"};sprintf(dest,"%.5s%.4s",src1,src2);也可以动态的截取字符串的某一些字符,char dest[256];char src1[] = {"a","b","c","d","e"};char src2[] ={"1","2","3","4"};sprintf(dest,"%.*s%.*s",2,src1,3,src2);也可以窃取浮点类型的有效位sprintf(str,"%*.*",10,4,d_arg);补充一点,sprintf的返回值就是字符串的字符的个数,也就是strlen(str)的结果,也可以打印某个参数的地址int i=2;sprintf(str,"%0*x",sizeof(void *),&i);或者用sprintf(str,"%p",&i);此外这些都是都是多字节类型(ANSI)的函数,而对于unicode类型的应该使用的相似的函数:int wprintf( const wchar_t *format [, argument]... );int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );用法和上面的很相似的,就是类型不同而已,对于printf和sprintf该函数的包含在<stdio.h>头文件而sprintf和wprintf函数包含在<stdio.h>或者<wchar.h>头文件中。《C++ 设计新思维》 下载见 http://www.linuxidc.com/Linux/2014-07/104850.htmC++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码 http://www.linuxidc.com/Linux/2014-05/101227.htm读C++ Primer 之构造函数陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm读C++ Primer 之智能指针 http://www.linuxidc.com/Linux/2011-08/40177.htm读C++ Primer 之句柄类 http://www.linuxidc.com/Linux/2011-08/40175.htm将C语言梳理一下,分布在以下10个章节中:
  1. Linux-C成长之路(一):Linux下C编程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成长之路(二):基本数据类型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成长之路(三):基本IO函数操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成长之路(四):运算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成长之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成长之路(六):函数要义 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成长之路(七):数组与指针 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成长之路(八):存储类,动态内存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成长之路(九):复合数据类型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成长之路(十):其他高级议题
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-11/109193.htm