读书人

sprintf_s参数议论

发布时间: 2013-04-07 12:50:11 作者: rapoo

sprintf_s参数讨论
各位大神,想请教下sprintf_s第2个参数怎么理解。
int a = 5;
char szTemp[32] = {0};
1)sprintf_s(szTemp, sizeof(szTemp)/sizeof(char), "%d", a);
2)sprintf_s(szTemp, sizeof(szTemp), "%d", a);
想请教下是1)的理解正确还是2)的理解正确?虽然结果一样,但是意义不一样啊。请论述,谢谢!
[解决办法]
第二个参数是缓冲区的大小
1)sprintf_s(szTemp, sizeof(szTemp)/sizeof(char), "%d", a)的第二个参数算出了szTemp的大小
2)sprintf_s(szTemp, sizeof(szTemp), "%d", a)是算出了szTemp这个缓冲区的字节数,char刚好是一个字节,所以刚好等于数组的大小
[解决办法]
sizeOfBuffer
Maximum number of characters to store.

最大可存储的字符个数
[解决办法]

引用:
我也知道啊,字符数说的是个数?就是1)的写法才是最佳的?理解下面的代码吧
wchar_t szTemp[3] = {0};
int aa = 5;
1)swprintf_s(szTemp, sizeof(szTemp)/sizeof(wchar_t), L"%d", aa);
2)swprintf_s(szTemp, sizeof(szTemp), L"%d", ……

第二个参数是最多可存储的字符个数,只要第三个参数大小不超过它就是对的,第二个参数可以为任何整型常量,你写100都是对的
[解决办法]
引用:
我也知道啊,字符数说的是个数?就是1)的写法才是最佳的?理解下面的代码吧
wchar_t szTemp[3] = {0};
int aa = 5;
1)swprintf_s(szTemp, sizeof(szTemp)/sizeof(wchar_t), L"%d", aa);
2)swprintf_s(szTemp, sizeof(szTemp), L"%d", aa);
1) or 2……
1是对的,因为字符个数是3,字节数是6,单每个字符占2个字节

读书人网 >C++

热点推荐