先来看个程序
#include <stdio.h>
void main( void )
{
char buffer[200], s[] = "computer", c = 'l';
int i = 35, j = 0;
float fp = 1.7320534f;
j = sprintf( buffer, "String:%s/n", s);
cout<<j<<endl; // j = 16
cout<<buffer<<endl;
j += sprintf( buffer + j, "Character:%c/n", c);
cout<<j<<endl; // j = 16 + 12 = 28
cout<<buffer<<endl;
j += sprintf( buffer + j, "/tInteger:%d/n", i);
cout<<j<<endl; // j = 28 + 12 = 40 此处%d格式化后占2bytes
cout<<buffer<<endl;
j += sprintf( buffer + j, "/tReal:%f", fp);
cout<<j<<endl; // j = 40 + 14 此处%f格式化后占8bytes
printf( "Output:/n%s/ncharacter count = %d/n", buffer, j );
}
sprintf, swprintf @import url(MS-ITS:dsmsdn.chm::/html/msdn_ie4.css);
int sprintf( char *buffer, const char *format [, argument] ... );
int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );
sprintf, swprintf @import url(MS-ITS:dsmsdn.chm::/html/msdn_ie4.css);
sprintf returns the number of bytes stored in buffer, not counting the terminating null character. swprintf returns the number of wide characters stored in buffer, not counting the terminating null wide character.
sprintf, swprintf @import url(MS-ITS:dsmsdn.chm::/html/msdn_ie4.css);
Parameters
buffer
Storage location for output
format
Format-control string
argument
Optional arguments
sprintf的返回值是不包括空白终止符的字符个数,但是经过sprintf格式化后,int占2个字节,float占8个字节。。。。
再看下面程序
int main()
{
char s[] = "computer";
cout<<s<<endl;
cout<<sizeof(s)<<endl; //9
char s1[100];
char* p= "haha";
int j = sprintf(s1, "/t%s", p);
cout<<s1<<endl; // haha
cout<<j<<endl; // 5
return 0;
};