#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <assert.h>

//memcpy:按字节复制

原型:extern void* memcpy(void *dest,void *src,unsigned int count)

//功能:由src所指内存区域复制count个字节到dest所指的内存区域;

//同strcpy

void *memcpy_su(void *dest, void *src, unsigned int count)

{

assert ((dest!=NULL)&&(src!=NULL));

char* bdest = (char*)dest;

char* bsrc = (char*) src;

while(count-->0)

*bdest++ = *bsrc++;

return dest;

}

//strcpy:复制字符串,遇到’\0’就结束

//原型:extern char *strcpy(char *dest,char *src)

//功能:把src所指由’\0’结束的字符串复制到dest所指的数组中;

//说明:src和dest所指内存区域是不可以重叠的且dest必须有足够的空间来容纳字符串。返回dest指针。

char *strcpy_su(char *dest,char *src)

{

assert((dest!=NULL)&&(src!=NULL));

char *address = dest;

while((*dest++=*src++)!='\0')

continue;

return dest;

}

//memset:设置buffer所指的内存区域的前count个字节,用字符c来代替

//原型:extern void *memset(void *buffer,int c,int count);

void *memset_su(void *buffer, int c, int count)

{

assert ((buffer!=NULL));

char* buffer2 = (char*)buffer;

while(count-->0)

*buffer2++ = c;

return buffer;

}

void main()

{

char str1[100]="abchjhgjghjgjgh";

char str2[50]="efghdfkdjf";

strcpy(str1, str2);

printf("%s\n",str1);

char a[3];

memset(a, 'a', sizeof(a)-1);

memset(&a[2], '\0',1);

printf("%s\n",a);

memcpy(str1, str2, strlen(str2));

printf("%s\n",str1);

}

C++:memset ,memcpy 和strcpy 的根本区别!的更多相关文章

  1. memmove、memcpy、strcpy、memset的实现

    memmove.memcpy.strcpy.memset 原型为: void *memmove( void* dest, const void* src, size_t count ); char*  ...

  2. memset memcpy函数

    memset 函数 1.其头文件为: #include<memory> 或者#include<string> 2.原型    看清是对每个字节,不是其类型 void *mems ...

  3. C的memset,memcpy,strcpy 的区别 及memset memcpy memmove源码

    extern void *memcpy(void *dest,void *src,unsigned int count);#include <string.h>   功能:由src所指内存 ...

  4. memset,memcpy,strcpy的使用与区别

    1.memset 原型:   extern void *memset(void *buffer, int c, int count); 功能:   把buffer所指内存区域的前count个字节设置成 ...

  5. memcpy 与strcpy的区别

      C/C++中mencpy的代码实现:https://www.cnblogs.com/goul/p/10191705.html C/C++中strcpy的代码实现:https://www.cnblo ...

  6. memcpy和strcpy的区别

    strcpy和memcpy主要有以下3方面的区别. 复制的内容不同.strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组.整型.结构体.类等. 复制的方法不同.strcpy不需要指 ...

  7. C的memcpy和strcpy的区别

    strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而 ...

  8. memset,memcpy,strcpy

    http://www.cppblog.com/junfeng568/archive/2006/03/11/4022.html

  9. memset,memcpy,memcmp用法

    void* memset(void *s, int ch, size_t n); 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值. 例如:memset(lpMyStruct ...

随机推荐

  1. 利用Testng注释实现多线程并发测试

    Testng 是一款非常优秀的测试框架,真正从测试角度出发,为测试所想.在测试过程中我们经常会遇到对某一个场景做并发请求,主要想了解该程序在并发时是否会有异常或者没考虑到的其他情况,这时往往不是要做性 ...

  2. 后续遍历 java leecode

    以前觉得后续遍历最难写,今天看了篇博客http://blog.csdn.net/sgbfblog/article/details/7773103,其实却是我们仔细比较后续遍历和先序遍历,其实后续遍历就 ...

  3. codeforce 621B Wet Shark and Bishops

    对角线 x1+y1=x2+y2 或者x1-y1=x2-y2 #include<iostream> #include<string> #include<algorithm& ...

  4. 关于Spring的Controller及Struts的Action的多线程的注意

    struts是线程安全,并不是指多线程,而是指单态,当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action类对象,execute方法加上了同步关键字,如果你在action里加上一个全 ...

  5. Msys下gcc的配置

    打开文件/etc/profile,添加如下路径, C_INCLUDE_PATH=/e/msys/1.0/include export C_INCLUDE_PATH CPLUS_INCLUDE_PATH ...

  6. 解决Hadoop-Eclipse-Plugin放在Plugin目录下没反应的问题

    有时候自己编译或者下载的Hadoop-Eclipse-Plugin放到Eclipse的Plugin目录下面,启动Eclipse没有反应,即看不到小象和Map/Reduce视图.可以通过查看Eclips ...

  7. 使用VisualSVN Server搭建SVN服务器(转载)

    转载于http://www.cnblogs.com/greywolf/archive/2013/01/28/2879952.html 使用 VisualSVN Server来实现主要的 SVN功能则要 ...

  8. UVA 557 - Burger(概率 递推)

     Burger  When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was ...

  9. Objective-C-使用NSMutableURLRequest发送POST请求,使用NSJSONSerialization解析JSON字符串

    NSString *reqData = @"Data="; NSData *postDatas = nil; NSString *urlPath = @"url" ...

  10. 虚机分配静态IP地址

    在为虚机分配静态IP地址池的IP时,如果报错“没有从与 VMSubnet 相关的 IP 池中为虚拟网络适配器 9i [MAC: 001DD8B71C17] 分配 CA (客户地址)” 使用“动态获取” ...