我知道网上有很多答案,说一个比另一个更好,但我已经明白,strncpy()在防止由于缺失而导致系统不必要的崩溃方面更好'\0'.正如许多人所说,这是非常防御性的.
我已经浏览过这个链接:为什么要使用strncpy而不是strcpy?
让我们说:
char dest[5];
char src[7] = "Hello";
strncpy(dest, src, sizeof(dest)-1);
Run Code Online (Sandbox Code Playgroud)
有了这个实现(密钥sizeof(dest)-1总是为'\0'附加提供空间),即使目标有一个截断的字符串,是不是总是更安全使用strncpy()而不是strcpy()?换句话说,我想明白了一会时,要使用strcpy()过strncpy()?