CC++字符串函数之复制函数详解
突然发现对字符串函数缺乏系统的了解,所以花了⼀点时间专门整理下,在此记录之,以⽅便⾃⼰及有需要的⼈使⽤。
C/C++字符串函数的头⽂件:string.h
复制函数主要有4个,如下:
1、char * strcpy(char* destination,const char * source);
2、char* strncpy(char* destination,const char* source,size_t num);
3、void * memcpy(void* destination,const void* source,size_t num);
4、void * memmove(void* destination,const void* source,size_t num);
功能及⽤法说明:
1、strcpy:将由source指针指⽰的C 字符串(包括结尾字符)复制到destination指针指⽰的区域中。该函数不允许source和destination的区域有重叠,同时,为了避免溢出,destination区域应该⾄少和source区
域⼀样⼤。
2、strncpy:复制source的前num字符到destination。如果遇到null字符('\0'),且还没有到num个字符时,就⽤(num - n)(n是遇到null字符前已经有的⾮null字符个数)个null字符附加到destination。注意:并不是添加到destination的最后,⽽是紧跟着由source中复制⽽来的字符后⾯。下⾯举例说明:
char des[] = "Hello,i am!";
char source[] = "abc\0def";
strncpy(des,source,5);
此时,des区域是这样的:a,b,c,\0,\0,i,空格,a,m,!
\0,\0并不是添加在!的后⾯。
这⾥,需要注意strcpy仅仅复制到null字符就结束了。
字符串拷贝函数strcpy作用3、memcpy:将source区域的前num个字符复制到destination中。该函数不检查null字符(即将null字符当作普通字符处理),意味着将复制num个字符才结束。该函数不会额外地引⼊null字符,即如果num个
字符中没有null字符,那么destination 中相应字符序列中也没有null字符。同strcpy的区别:允许将source中null字符后⾯的字符也复制到destination中,⽽strcpy和strncpy则不可以。
4、memmove:同memcpy完成同样的功能,区别是,memmove允许destination和source的区域有重叠。⽽其他三个函数不允许。
例⼦:
char str[] = "This is a test!";
memmove(str+2,str+10,4);
此时,str变成:Thtests a test!
以上这篇C/C++字符串函数之复制函数详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论