C++求助,strncpy用法解释!

2020-10-07 教育 114阅读
char s[6]={};
改为
char s[7]={0};
试试,原因是:如果你输入的id字符串长度等于或大于6个时,前6个字符都会被
复制到s中,而s只有6个字符的空间,导致s字符串最后的字符不是终止符结束,cout的输出结果就可能会出现乱码。所以你要把s字符串预留出一个字符来保存终止符'\0'。
=========================================================
The strncpy function copies the initial count characters of
strSource to strDest and returns strDest. If count
is less than or equal to the length of strSource, a null character is not
appended automatically to the copied string. If count is greater than the
length of strSource, the destination string is padded with null
characters up to length count. The behavior of strncpy is
undefined if the source and destination strings overlap.
=========================================================
大意是:
strncpy函数从源字符串中复制指定个数的字符到目标字符串中,并返回目标字符串,如果指定字符数小于或等于源字符串的长度,空字符不会自动添加到被复制的字符串后面。如果指定字符数大于源字符串的长度,目标字符串将被空字符补足到指定的长度。如果源字符串和目标字符串存在叠加的情况(即两个字符串都是同字符串的一部分,且有部分内容首尾重合),则strncpy的运行结果是不确定的。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com