printf()是将数据输出到stdout中,而sprintf()将数据输出到字符串缓冲区中
函数原型:int sprintf( char *buffer, const char *format [, argument] ... );
buffer:储存输出的地方
format:格式化字符串,里面的参数有很多种类
argument:可选参数
返回值:在buffer中储存的字节数但不包括null结束符标志
例:
#include <string>
#include <iostream>
using namespace std ;
int main()
{
char buffer[200], s[] = "computer", c = 'l';
int i = 35, j;
float fp = 1.7320534f;
/* Format and print various data: */
j = sprintf( buffer, "\tString: %s\n", s );
j += sprintf( buffer + j, "\tCharacter: %c\n", c );
j += sprintf( buffer + j, "\tInteger: %d\n", i );
j += sprintf( buffer + j, "\tReal: %f\n", fp );
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
system("pause") ;
return 0 ;
}
输出:
在编译器中使用sprintf时会报警告,使用sprintf()会出现内存溢出的风险,sprintf()有一个安全版本sprintf_s()通过指定缓冲区的长度来避免风险,其原型如下:
int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] ... );