【后记·关于strncpy函数】
这一章我们来讲一讲strncpy函数。
strncpy函数的作用是将一个字符数组里的内容拷贝到另一个字符数组里。其原型为:
(需要cstring头文件)
害,这个参数太长了,我简写算了。其实我至今仍不太明白编这个库函数的人取那么复杂的参数名,自己不累吗?
Dest表示的是待拷贝的那个字符数组,Source表示的是含有需要拷贝内容的那个字符数组,Count表示Source中需要拷贝的字符的数量。(Size_t即unsigned long)
此处我们可以看到:Source的变量类型char前面用上了一个const常量方式,这就涉及到一个知识点:用常量保护形参不被修改。因为指针“*”和数组“[]”实际上是一回事,而当指针作为参数时,指针指向的对象/指针值若是在函数中修改,main函数中该函数的实参也会被修改。同样,如果在strncpy函数中,Source被修改了,那么main函数中的Source的实参也会被修改,这样可能得到无法挽回的恶果。然而用const定义后,在函数中就只能读出它,而不能修改它,也就不用担心上述情况了。
【strncpy函数实战】
如果我想要自己用等号来达到拷贝字符数组的效果:
那么结果会是这样:
编译错误。
那么当我用上strncpy函数:
结果是这样:
编译成功。