精华内容
下载资源
问答
  • C语言中的复制函数(strcpy和memcpy)

    万次阅读 2016-05-14 17:15:27
    PS:初学算法,开始刷leetcode,Rotate array的预备知识(写...这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去。 EX: strncpy(str1,str2,2);作用是将st

    strcpy和strncpy函数

    这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去。

    EX:

    char str1[10]='',str2[]={"China"};
    strcpy(str1,str2);

     

    strncpy(str1,str2,2);作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符。

    memcpy函数

    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

    用法:void *memcpy(void *dest, const void *src, size_t n);

    EX:

    char *s1 = "csdn";
    char *s2 = new char[10];
    char *s3 = memcpy(s2,s1,5);

     

    strcpy和memcpy的区别

    1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
    2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
    3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

     

    memcpy的实现

    要注意,内存重叠的情况,比如

    char test[]="abcdefghi";

    memcpy(test+3,test,6);

    如果从头向尾复制,结果就是abcabcabc,如下图所示,而正确结果应该是abcabcdef。

    所以像这种情况应该从尾向头复制

    void memcpydiy(char *dest,const char *scr,int len)
    {
    	if (dest == NULL || scr == NULL)
    		return;
    	char *pdest = dest;
    	char *pscr = (char *)scr;
    	if ((scr < dest) && (dest < scr + len))  //重叠,从尾部开始复制
    	{
    		pdest = pdest + len - 1;
    		pscr = pscr + len - 1;
    		while (len--)
    		{
    			*pdest-- = *pscr--;
    		}
    	}
    	else
    	{
    		while (len--)
    		{
    			*pdest++ = *pscr++;
    		}
    	}
    }

     

     

    展开全文
  • 【C/C++】字符串函数之复制函数

    万次阅读 2019-04-30 16:54:29
    C/C++字符串复制函数: C/C++字符串函数的头文件:string.h 复制函数主要有4个,如下: 1、char * strcpy(char* destination,const char * source); 2、char* strncpy(char* destination,const char* source,...

    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中复制而来的字符后面。下面举例说明(这里,需要注意strcpy仅仅复制到null字符就结束了):

        char des[] = "Hello,i am!";
        char source[] = "abc\0def";
        strncpy(des,source,5);
        //此时,des区域是这样的:a,b,c,\0,\0,i,空格,a,m,!  
        //\0,\0并不是添加在!的后面。

    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!
    展开全文
  • copy函数 复制函数

    千次阅读 2019-03-26 16:20:49
    头文件 #include<algorithm> 将a[0]~a[2]复制到b[5]~b[7] 并且覆盖掉原来的数据 (主要用于容器之间) copy(a.begin(),a.begin()+3,b.begin()+4);

    头文件 

    #include<algorithm>

    将a[0]~a[2]复制到b[5]~b[7] 并且覆盖掉原来的数据 (主要用于容器之间)

    copy(a.begin(),a.begin()+3,b.begin()+4);

     

    展开全文
  • 字符串复制函数strcpy()

    万次阅读 2019-05-26 14:58:31
    两个字符串变量不可以使用“=”进行直接赋值,只能通用strcpy()函数进行赋值。strcpy是 string copy的缩写,即“字符串复制”。他的原型是: #include<stdio.h> char *strcpy(char *dest, const char *src); ...

    两个字符串变量不可以使用“=”进行直接赋值,只能通用strcpy()函数进行赋值。strcpy是 string copy的缩写,即“字符串复制”。他的原型是:

    #include<stdio.h>
    char *strcpy(char *dest, const char *src);
    

    功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置,dest和src可以是字符数组名,也可以是字符指针变量名。src也可以是一个字符串常量。dest是destination的缩写,即“目的地”,src是source的缩写,即“源”。

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char str[30];
    	strcpy(str, "i love you");
    	printf("%s\n", str);
    	return 0;
    }
    

    第一:程序中要想调用strcpy()函数,必须引入<string.h>,而puts()和gets()函数就不需要。

    第二:strcpy()虽然也可以用于初始化,但与前面讲的初始化又有所不同。要想用strcpy()将一个字符串复制一个到字符数组中,那么字符数组在定义时长度一定要够大,要足够容纳被复制的字符串,如果不够,程序运行会出错,同样,在定义字符数组长度,一定要将结束标识符’\0’考虑进去,系统不会自动为’\0’分配内存单元的。

    第三:如果定义的字符数组长度大于所要复制的字符串长度,那么字符数组剩下的没用完的内存单元就将继续保存原有的数据。

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char str[20];
    	int i;
    	strcpy(str, "i love you");
    	strcpy(str, "Lord");
    	for(i=0; i<11; ++i)
    	{
    		printf("%c", str[i]);
    	}
    	printf("\n");
    	return 0;
    }
    
    展开全文
  • C/C++字符串函数之复制函数

    千次阅读 2013-10-17 11:45:04
    突然发现对字符串函数缺乏系统的了解,所以花了一点时间专门整理下,在此记录...复制函数主要有4个,如下: 1、char * strcpy(char* destination,const char * source); 2、char* strncpy(char* destination,const c
  • 编写字符串复制函数

    千次阅读 2011-08-03 10:24:59
    编写字符串复制函数 字符串复制函数看似简单,但隐藏了一些容易被忽略的细节,这些细节恰恰也是平时工作中的隐藏的BUG所在,一旦发生很难察觉,而且这也是各大企业在招聘的时候重要的考点。下面说明一下。 问题:...
  • 自定义内存复制函数memcpy()

    千次阅读 2015-12-14 11:46:26
    memcpy是C语言中的内存复制函数,它的目的是将src指向地址为起始地址的连续n个字节的数据复制到以dest所指向地址为其实地址的空间内,函数返回指向destin的指针。需要注意的是src与dest所指内存区域不能重叠。与...
  • 这两个函数在基础性笔试中出镜率很高,所以有必要好好总结下:strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。strcpy只用于字符串复制,并且它不仅复制源字符串内容之外,还会复制...
  • 已知strcpy的函数原型:char *strcpy(char *strDest,const char *...不调用C++/C的字符串库函数,实现字符串复制函数strcpy。  一种方法: char *strcpy(char *strDest, const char *strSrc)//源字符串参数用const修
  • C语言不使用strcpy()函数,实现字符串的复制功能!(我是新手,麻烦大神注释说明)
  • C++字符串复制函数

    万次阅读 2016-10-20 15:44:28
    今天用到字符串的复制操作,做一个以二进制的形式读一个文件,以16进制写到TXT中,再以十六进制转换成二进制写回原文件。达到复制文件的效果,同时用的是...strcpy:顾名思义,复制一个字符串,函数原型为:1、char * st
  • 常见的字符串复制函数

    千次阅读 2017-07-02 17:03:24
    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 2.strcpy_s() _s函数是...
  • matlab矩阵复制函数:repmat

    千次阅读 2015-03-26 11:54:05
    repmat 即 Replicate Matrix ,复制和平铺矩阵,是 MATLAB 里面的一个函数。 中文名 复制和平铺矩阵 外文名 repmat 又 名 Replicate Matrix 类 型 函数 ...
  • 答案如下,解析可能考完试会写一下吧,我...以下程序的功能是:首先在main函数中输入两个整数,然后在被调函数sort中将这两个整数按升序排序,最后在main函数中输出排序结果。要求写出函数sort。 void sort(int *p,int
  • C语言字符串复制函数

    千次阅读 2011-11-26 00:08:12
    今天在CSDN上看到一道C语言的字符串复制面试题,题目如下: 要求逆序输出输入的字符串,并且不能用第三方变量,函数的原型是 char* strNCopy(const char* source,char* dest)要求不用库函数, 根据要求我写了这样...
  • memmove函数用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。 当dest指向count区域时,目标区域...
  • java中数组复制函数详解

    千次阅读 2014-06-01 21:41:04
    java中数组方式总结: java中数组复制的方式
  • Strcpy与memcpy两函数的经典实现,哈哈,不过,不是偶写的!^_^…………   char *strcpy(char *des, const char *src){  assert((des != NULL) && (src != NULL));  char *add = des;...
  • 字符串复制函数strcpy的实现算法

    千次阅读 2015-09-05 12:08:27
    1,字符串复制,需要考虑三种情况: 目的字符串未被赋值,本身是个空串,源字符串存在。目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字符扔被保留...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,017,571
精华内容 407,028
关键字:

复制函数