c++ - 如何使用安全的 strcpy_s 函数?

标签 c++ c

我正在尝试使用更安全的 strcpy_s 更新对 strcpy 的调用。旧函数调用如下所示:

char buf[6];
strcpy(buf+1, "%#c");

为了将上面的代码变成更安全的版本,我应该在 size 参数中输入什么?

char buf[6];
strcpy_s(buf+1, /*SIZE GOES HERE*/, "%#c");

我想我对代码的 buf+1 部分感到困惑。它本质上只是一个指向寄存器 ONE block 的指针吗?如果是这样,我应该为 strcpy_s 的 SIZE 参数输入什么?我试过:

  strcpy_s(buf+1, sizeof(buf+1), "%#c");

这似乎可行,但我想知道是否有更好的方法来做到这一点。

最佳答案

如果您要复制到 buf开始,您会说:

strcpy_s(buf, sizeof(buf), "%#c");

由于您跳过了第一个字符,因此可以使用的字符较少,因此:

strcpy_s(buf + 1, sizeof(buf) - 1, "%#c");

关于c++ - 如何使用安全的 strcpy_s 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121352/

相关文章:

c++ - 为什么这个简单的 Batch 方法不能按预期工作?

c++ - C++中的逗号运算符

c++ - 使用 QT 和参数在 SQLite 数据库中插入日期时间

c - 获取消息目标地址 - 套接字 C

c - gSOAP:如何省略响应中的可选元素?

c++ - 在 mac 上执行 .app 时,fstream 和 qfile 不创建文件

c++ - 我可以在 C++ 中使用非 ASCII 字符创建变量名吗?

java - 动态更改Windows保存目录?

c - 什么是一组整数集的简单 C 库?

c - 在没有宿主程序帮助的情况下,如何在同一个进程中协调不同的 DLL?