• 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字符(''),且还没有到num个字符时,就用(num - n)(n是遇到null字符前已经有的非null字符个数)个null字符附加到destination。注意:并不是添加到destination的最后,而是紧跟着由source中复制而来的字符后面。下面举例说明:

    char des[] = "Hello,i am!";

    char source[] = "abcdef";

    strncpy(des,source,5);

    此时,des区域是这样的:a,b,c,,,i,空格,a,m,!  

    ,并不是添加在!的后面。

    这里,需要注意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!

  • 相关阅读:
    Python3和高性能全文检索引擎Redisearch进行交互
    Django项目连接多个数据库配置
    Redisearch实现的全文检索功能服务
    python一键搭建ftp服务
    yum提示错误: error: rpmdb: BDB0113 Thread/process 9866/140290246137664 failed:
    Django + FastDFS (分布式远程服务器存储文件)
    Docker来搭建分布式文件系统FastDfs
    VSCode---REST Client接口测试辅助工具
    在Centos下使用Siege对Django服务进行压力测试
    Mysql联合索引的最左前缀原则以及b+tree
  • 原文地址:https://www.cnblogs.com/cappuccino/p/4651199.html
Copyright © 2020-2023  润新知