我正在尝试使用更安全的 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/