如果第二个参数设置为1,则strncpy_s不起作用

时间:2015-07-09 22:10:51

标签: strncpy

我很好奇为什么strncpy_s,当我将第二个参数numberOfElements设置为1时,它不会将第一个字符复制到目标。当我将它设置为2时,它将第一个复制到目的地。 例如:

int main()
{
    char a[16];
    strncpy_s(a, 1, "1+1=2", _TRUNCATE);
    return 0;
}

然后在调试器中,我找到了a[0] = 0'\0'。为什么不是a[0] = '1'

1 个答案:

答案 0 :(得分:1)

因为字符串" 1"占用两个字节,只有一个空间。

C样式字符串必须有一个终止零字节,否则无法知道它的长度。只有一个字符的空间,唯一可能的合法字符串只是一个终止符。