如何把一个字符指针指向的字符串复制给字符数组
1个回答
展开全部
假如有char *p且p已指向一含有10个元素的字符数组,现有目标数组char b[10],则可以有三种函数可以实现字符串复制。
1、strcpy
语法格式: strcpy(目标地址,源地址)
此例语法:strcpy(b,p);
将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。
2、strncpy
语法格式:strncpy(目标地址,源地址,字符长度)
此例语法:strncpy(b,p,10);
将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy
语法格式:memcpy(目标地址,源地址,字节长度)
此例语法:memcpy(b,p,sizeof(char)*10);
内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
1、strcpy
语法格式: strcpy(目标地址,源地址)
此例语法:strcpy(b,p);
将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。
2、strncpy
语法格式:strncpy(目标地址,源地址,字符长度)
此例语法:strncpy(b,p,10);
将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy
语法格式:memcpy(目标地址,源地址,字节长度)
此例语法:memcpy(b,p,sizeof(char)*10);
内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询