C/C++字符串函数之复制函数详解

 更新时间:2016年09月04日 11:43:02   投稿:jingxian  
下面小编就为大家带来一篇C/C++字符串函数之复制函数详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

突然发现对字符串函数缺乏系统的了解,所以花了一点时间专门整理下,在此记录之,以方便自己及有需要的人使用。

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字符就结束了。

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++字符串函数之复制函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C++中strlen(),sizeof()与size()的区别

    C++中strlen(),sizeof()与size()的区别

    本文主要介绍了C++中strlen(),sizeof()与size()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • windows 下C++生成Dump调试文件与分析

    windows 下C++生成Dump调试文件与分析

    dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草,这篇文章主要介绍了windows 下C++生成Dump调试文件与分析,需要的朋友可以参考下
    2023-04-04
  • 浅析操作系统中的虚拟地址与物理地址

    浅析操作系统中的虚拟地址与物理地址

    本文主要介绍了操作系统中的虚拟地址与物理地址。在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。那当程序同时运行多个程序时,操作系统是如何为这些程序分配内存的呢
    2021-06-06
  • C++ 冒泡排序数据结构、算法及改进算法

    C++ 冒泡排序数据结构、算法及改进算法

    冒泡排序是一种简单排序。这种排序是采用“冒泡策略”将最大元素移到最右边。在冒泡过程中,相邻两个元素比较,如果左边大于右边的,则进行交换两个元素。这样一次冒泡后,可确保最大的在最右边。然后执行n次冒泡后排序即可完毕
    2013-04-04
  • Effective C++ 入门学习笔记

    Effective C++ 入门学习笔记

    这篇文章主要介绍了Effective C++ 入门学习笔记,需要的朋友可以参考下
    2023-08-08
  • VSCode添加头文件(C/C++)的实现示例

    VSCode添加头文件(C/C++)的实现示例

    这篇文章主要介绍了VSCode添加头文件(C/C++)的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • C++ 函数模板和类模板详情

    C++ 函数模板和类模板详情

    这篇文章主要对C++ 函数模板和类模板的相关资料的详细介绍,需要的朋友可以参考下面文章的具体内容
    2021-09-09
  • C++实现带头双向循环链表的示例详解

    C++实现带头双向循环链表的示例详解

    这篇文章主要介绍了如何利用C++实现带头双向循环链表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • OpenCV实现简单摄像头视频监控程序

    OpenCV实现简单摄像头视频监控程序

    这篇文章主要为大家详细介绍了OpenCV实现简单摄像头视频监控程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • C++ vector的基本使用示例详解

    C++ vector的基本使用示例详解

    这篇文章主要介绍了C++ vector的基本使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论