我对strncpy功能感到非常沮丧.我做了这样的事情:
char *md5S; //which has been assign with values, its length is 44
char final[32];
strncpy(final,md5S,32);
Run Code Online (Sandbox Code Playgroud)
但不知何故,长度char final[]超过32后.
我该怎么办?
你忘了为空角色留出空间
char final[33];
strncpy(final,md5S,32);
final[32] = '\0';
Run Code Online (Sandbox Code Playgroud)
strncpy如果源字符串长度或长于n字符,则不会终止复制的字符串.如果您有权访问它,您可以使用strlcpy,NUL将为您终止.
改为:
strncpy(dst, src, dstlen - 1);
dst[dstlen - 1] = '\0';
Run Code Online (Sandbox Code Playgroud)
要么
strlcpy(dst, src, dstlen);
Run Code Online (Sandbox Code Playgroud)
其中,对于char数组,dstlen = sizeof(dst).