C++中sprintf使用的方法与printf的区别分析

 更新时间:2015年01月12日 14:32:14   投稿:shichen2014  
这篇文章主要介绍了C++中sprintf使用的方法与printf的区别,实例分析了sprintf与printf的具体用法及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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++程序设计有所帮助。

相关文章

  • VC枚举串口端口应用

    VC枚举串口端口应用

    这篇文章主要介绍了VC枚举串口端口应用,罗列了常见的一些串口端口的应用实例,需要的朋友可以参考下
    2014-10-10
  • C++快速幂与大数取模算法示例

    C++快速幂与大数取模算法示例

    这篇文章主要介绍了C++快速幂算法和大数取模算法的示例,对C++程序员来说有一定的帮助,有需要的朋友可以参考借鉴,下面来一起看看。
    2016-08-08
  • C语言位运算和sizeof运算符详解

    C语言位运算和sizeof运算符详解

    这篇文章主要介绍了C语言位运算和sizeof运算符详解的相关资料,这里提供了详细的知识要点,并附简单代码示例,需要的朋友可以参考下
    2016-11-11
  • C语言数组栈实现模板

    C语言数组栈实现模板

    这篇文章主要为大家详细介绍了C语言数组栈实现模板,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • map插入自定义对象总结

    map插入自定义对象总结

    黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作。所以作为关键字,起码必须有“<”这个比较操作符
    2013-09-09
  • 详解C++编程中表达式的语义与计算顺序

    详解C++编程中表达式的语义与计算顺序

    这篇文章主要介绍了C++编程中表达式的语义与计算顺序,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • C++实现简易通讯录

    C++实现简易通讯录

    这篇文章主要为大家详细介绍了C++实现简易通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 对for循环中表达式和循环体的执行顺序详解

    对for循环中表达式和循环体的执行顺序详解

    今天小编就为大家分享一篇对for循环中表达式和循环体的执行顺序详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 《C++ primer plus》读书笔记(三)

    《C++ primer plus》读书笔记(三)

    本文是C++读书笔记系列的第三篇,是读完《C++ primer plus》一书第九、十两章记录下来的笔记,学习C++的同学可以看看参考下。
    2014-10-10
  • C语言中函数指针的三种使用方法总结

    C语言中函数指针的三种使用方法总结

    这篇文章主要介绍了 C语言中函数指针的三种使用方法总结的相关资料,希望通过本文大家能够彻底掌握指针的使用方法,需要的朋友可以参考下
    2017-10-10

最新评论