我很好奇为什么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'
?
答案 0 :(得分:1)
因为字符串" 1"占用两个字节,只有一个空间。
C样式字符串必须有一个终止零字节,否则无法知道它的长度。只有一个字符的空间,唯一可能的合法字符串只是一个终止符。