gpt4 book ai didi

c++ - _snprintf_s 错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:02 25 4
gpt4 key购买 nike

我在使用 _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");

在 buff 中,只有 "F(LL)" 被复制,即使字符串长度被计算为 6。如果我将长度参数指定为 strlen("F(LL)L") + 1,则会复制完整的字符串。

最佳答案

_snprintf_s() 的第二个参数是目标缓冲区的大小(以字节为单位)。必须为终止 NUL 字符保留一个字节,这就是不复制输入字符串的最后一个字符的原因。

传递缓冲区的实际大小而不是输入字符串的长度会更好(也更安全):

_snprintf_s(buff, sizeof(buff), _TRUNCATE, "%s", "F(LL)L");

关于c++ - _snprintf_s 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com