时间:2021-05-02
突然发现对字符串函数缺乏系统的了解,所以花了一点时间专门整理下,在此记录之,以方便自己及有需要的人使用。
C/C++字符串函数的头文件:string.h
复制函数主要有4个,如下:
? 1 2 3 4 5 6 7 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中复制而来的字符后面。下面举例说明:
? 1 2 3 4 5 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字符就结束了。
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的区域有重叠。而其他三个函数不允许。
例子:
? 1 2 3 char str[] = "This is a test!"; memmove(str+2,str+10,4);此时,str变成:Thtests a test!
以上这篇C/C++字符串函数之复制函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Ⅰ)字符串复制函数字符串复制是字符串操作中比较常用的操作之一。C语言库函数中提供的字符串复制函数是:strcpy函数。该函数的功能为:把源字符数组中的字符串复制
C++字符串处理函数字符串连接函数strcat其函数原型为strcat(char[],constchar[]);strcat是stringcatenate(字符
详解C++中十六进制字符串转数字(数值)主要有两个方法,其实都是对现有函数的使用:方法1:sscanf()函数名:sscanf功能:从字符串格式化输入用法:in
C语言bcopy()函数:复制内存(字符串)头文件:#includebcopy()函数用来复制内存(字符串),其原型为:voidbcopy(constvoid*
详解C++的String类的字符串分割实现功能需求,输入一个字符串“1-2-3”切割出“1”、“2”、“3”。在Java下直接用String的split函数就可