sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到string所指向的字符串。sprintf是个变参函数。使用sprintf对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用snprintf函数,该函数可对写入字符数做出限制。
函数简介
函数原型
int sprintf( char *buffer, const char *format, [ argument] … );
sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。
参数列表
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]…:可选参数,可以是任何类型的数据。
相关函数
intsprintf_s(char *buffer,size_tsizeOfBuffer,const char *format, [argument] … );
int _sprintf_s_l(char *buffer,size_tsizeOfBuffer,const char *format,locale_t locale ,[argument] … );
int swprintf_s(wchar_t*buffer,size_tsizeOfBuffer,constwchar_t*format ,[argument]…);
int _swprintf_s_l(wchar_t*buffer,size_t sizeOfBuffer,const wchar_t *format,locale_t locale ,[argument]…);
template
intsprintf_s(char (&buffer)[size],const char *format, [argument] … ); //仅存在于C++
template
int swprintf_s(wchar_t (&buffer)[size],const wchar_t *format ,[argument]…); //仅存在于C++
详细介绍
sprintf格式的规格如下所示。
1.处理字符方向。负号时表示从后向前处理。
2.填空字元。0的话表示空格填0;空格是内定值,表示空格就放着。
3.字符总宽度。为最小宽度。
4.精确度。指在小数点后的浮点数位数。
在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。
sprintf是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] … );
printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
该文章由作者:【固态水】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!