时间:2021-05-20
本文实例讲述了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++程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与clas
C/C++中gcc和g++的对比与区别一、区别1.gcc是GCC中的c编译器g++是GCC中的c++编译器2.对于后缀为.c的文件,gcc当成c文件处理,而g+
C++中引用与指针的区别实例详解引用是从C++才引入的,在C中不存在。为了搞清楚引用的概念,得先搞明白变量的定义及引用与变量的区别,变量的要素一共有两个:名称与
C语言的printf函数,参数的数量可以是可变的。使用va_start和va_end实现。C++中,实现参数可变,可以用overload。如果参数数量不是很多的
在C与C++中可以这样打印当前函数名:复制代码代码如下:printf("%s",__func__);但在Java没有此说法,一切即对象,得从某个对象中去获取,可