strncpy()函数【转】

2018-06-27 09:42:48来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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"

 

 

转自:https://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:《Effective C++》读书笔记 条款02 尽量以const,enum,inline替

下一篇:《Effective C++》读书笔记 条款03 尽可能使用const 使代码更加