C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为:
char * strncpy ( char * destination, const char * source, size_t num );
各个参数的含义显而易见,其中返回值与destination相同。
这个函数会出现三种情况:
1、num<source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的前num个字符到destination串中(不会自动为destination串加上结尾的'\0'字符);
2、num=source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符);
3、num>source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符),并且在destination串的结尾继续加上'\0'字符,直到拷贝的字符总个数等于num为止。
[例]
设有如下声明,注意此时source串的长度为6(包含最后的'\0'字符):
char destination[] = "********************"; // destination串为: "********************0"
cosnt char *source = "-----"; // source串为: "-----0"
情形1:如果执行如下语句:
strncpy( destination, source, 5 );
那么destination的前5个字符将会被'-'替换,即(以'0'表示'\0'字符):
destination串为: "-----***************0"
情形2:如果执行如下语句:
strncpy( destination, source, 6 );
那么destination的前6个字符将会被source的前6个字符替换,即(以'0'表示'\0'字符):
destination串为: "-----0**************0"
情形3:如果执行如下语句:
strncpy( destination, source, 10 );
那么destination的前6个字符将会被source的前6个字符替换,并且会在后面补4个'\0',即(以'0'表示'\0'字符):
destination串为: "-----00000**********0"
[参考资料]
1. http://www.cplusplus.com/reference/clibrary/cstring/strncpy/;
2. http://en.cppreference.com/w/cpp/string/byte/strncpy (这个示例程序很好)。
[done]
原文链接: https://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/43284
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!