关于函数sprintf_s()用法的疑问
使用函数sprintf_s(),初始用法如下:
char* msg = new char[100];
sprintf_s(msg, ...);
,编译不能通过,报error:the second paramater can't covert from char[74] to size_t,百思不得解,将代码做如下改动:
char mag[100];
sprintf_s(msg, ...);
,编译通过,请问各位这是什么原因?
查了下,它的原型如下:
函数原型:
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);
[解决办法]
函数调用时,有名名参数一个都不能缺少,一个一个对应匹配。
无名参数(。。。),根据需要,匹配,实参不能用省略号。
[解决办法]
有重载版本
template <size_t size>
int sprintf_s(
char (&buffer)[size],
const char *format [,
argument] ...
); // C++ only