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.
最大可存储的字符个数
[解决办法]
第二个参数是最多可存储的字符个数,只要第三个参数大小不超过它就是对的,第二个参数可以为任何整型常量,你写100都是对的
[解决办法]
1是对的,因为字符个数是3,字节数是6,单每个字符占2个字节