strcpy & memcpy区别

这两个经常使用的函数,主要区别有:

  1. strcpy 返回值是char *, strcpy(x1, x2); x1 x2必须都是char* 类型
  2. memcpy(x1, x2, sizeof(xx)); memcpy可以复制的类型很多;

如果你使用一个数组指针,则不能使用strcpy, 只能使用memcpy.

#cat aa.c
#include <stdio.h>
#include <string.h>

int main()
{
    char s1[64] = "hello";
    char (*ps1)[64] = &s1;

    printf("ps1:%s\n", ps1);
    char s2[64];

    char (*ps2)[64] = &s2;
    strcpy(ps2, ps1);
    memcpy(ps2, ps1, sizeof(char[64]));

    printf("s2:%s\n", s2);

    return 0;
}

原文地址:https://www.cnblogs.com/muahao/p/8400583.html

时间: 2024-11-13 09:54:46

strcpy & memcpy区别的相关文章

[VC]strcpy memcpy memset区别与简介

strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字符串复制到dest所指的数组中. 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.       返回指向dest的指针.memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned int count);

C的memcpy和strcpy的区别

strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);

memcpy的用法与strcpy的区别及纯c语言实现

void * memcpy ( void* destination, const void * source, size_t num ); 函数功能: 由source所指内存区域复制num个字节到destination所指内存区域. 函数返回: 指向destination的指针. 1 memcpy可以复制任意内容,例如字符数组.整型.结构体.类等. 2 memcpy根据其第3个参数决定复制的长度,strcpy不需要指定长度,它遇到字符串结束符"\0"便结束. 3 通常在复制字符串时用s

strcpy, memcpy, memset函数

一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 实现代码: char * strcpy(char * strDest,c

strcpy,memcpy,memset函数实现

strcpy 实现,只能拷贝字符串 char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && (source != NULL)); while((*des++ = *source++)!='\0'); return r; } memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换 void *myMemCopy(void *dest,const void *src,siz

C: strcpy &amp; memcpy &amp; scanf/printf format specifier.. escape characters..

well, strcpy differs from memcpy in that it stops copy at \0 the format specifier is a string.. which can be assigned to a char*.. like.. strcpy(a,"%d"); the escape characters only affect some cases.. in printf's format specifier.. %% //  /t is

C语言 strcpy,memcpy,memmove,memccpy函数

1.原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字符串复制到dest所指的数组中. 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 2.原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include &l

初始化char指针--赋值和strcpy() 本质区别【转】

原文地址:http://hi.baidu.com/todaygoodhj/item/0500b341bf2832e3bdf45180 使用常量字符串初始化char指针,或者使用strcpy复制,从语法上我觉得都是可以的.但是,在这个例子中选择了后者,我觉得是有其他考虑的.因为,ctermid_name是全局的,可能用来传送数据,将str指向这个地址,可能会和其他的函数同步一个内存变量:而使用常量初始化:str="/dev/tty",那么系统会分配地址,这样str的地址是随机的. 个人认

strcpy, mencpy, memmove三者区别

首先来看strcpy,目的是实现字符串的复制,这里需要注意几个点: 1.判断指针的有效性 2.将复制后的指针地址返回,为了支持链式操作 3.不要忘记将字符串最后一个自负'\0'复制给dest 4.注意原字符串类型为const,保证在函数内部不会被修改 char* myStrcpy(char* dest, const char* src){ assert(dest!=NULL && src !=NULL); char* r = dest; while((*dest++ = *src++)!=