Dex*_*ter 0 c++ msvcrt visual-c++
我用_snprintf_s得到了这个奇怪的错误:
int ival = strlen("F(LL)L");
char buff[32];
memset(buff,0,sizeof(buff));
_snprintf_s(buff,strlen("F(LL)L"),_TRUNCATE,"%s","F(LL)L");
Run Code Online (Sandbox Code Playgroud)
在buff中只"F(LL)"复制即使字符串长度计算为6.如果我指定长度参数,strlen("F(LL)L") + 1则复制完整字符串.
_snprintf_s()的第二个参数是目标缓冲区的大小(以字节为单位).必须为终止NUL字符保留一个字节,这就是为什么不复制输入字符串的最后一个字符的原因.
传递缓冲区的实际大小而不是输入字符串的长度会更好(也更安全):
_snprintf_s(buff, sizeof(buff), _TRUNCATE, "%s", "F(LL)L");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |