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为止。
————————————————————————————————————
三种情况,自己做个实践:
情况一:
代码:
编译:
[root@localhost strncpy]# make strncpy
cc strncpy.c -o strncpy
运行:
[root@localhost strncpy]# ./strncpy
abc
————————————————————————————————————
情况二:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcdefghi
————————————————————————————————————
情况三:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcd
参考:http://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html
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为止。
————————————————————————————————————
三种情况,自己做个实践:
情况一:
代码:
编译:
[root@localhost strncpy]# make strncpy
cc strncpy.c -o strncpy
运行:
[root@localhost strncpy]# ./strncpy
abc
————————————————————————————————————
情况二:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcdefghi
————————————————————————————————————
情况三:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcd
参考:http://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/6953/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-1-16 10:13
评论列表