我如何使用安全的strcpy_s函数?

phi*_*son 1 c c++

我正在尝试strcpy更安全地更新呼叫strcpy_s.旧函数调用如下所示:

char buf[6];
strcpy(buf+1, "%#c");
Run Code Online (Sandbox Code Playgroud)

为了将上面的代码转换为更安全的版本,我会为size参数添加什么?

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

我想我buf+1对代码部分感到困惑.这实际上只是一个指向寄存器ONE块的指针buf吗?如果是这样,我会为SIZE参数添加strcpy_s什么?我试过了:

  strcpy_s(buf+1, sizeof(buf+1), "%#c");
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*oub 5

如果你复制到启动buf,你会说:

strcpy_s(buf, sizeof(buf), "%#c");
Run Code Online (Sandbox Code Playgroud)

因为你正在跳过第一个字符,所以你可以使用一个字符,所以:

strcpy_s(buf + 1, sizeof(buf) - 1, "%#c");
Run Code Online (Sandbox Code Playgroud)