C++:memset ,memcpy 和strcpy 的根本区别!
#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 的根本区别!的更多相关文章
- memmove、memcpy、strcpy、memset的实现
memmove.memcpy.strcpy.memset 原型为: void *memmove( void* dest, const void* src, size_t count ); char* ...
- memset memcpy函数
memset 函数 1.其头文件为: #include<memory> 或者#include<string> 2.原型 看清是对每个字节,不是其类型 void *mems ...
- C的memset,memcpy,strcpy 的区别 及memset memcpy memmove源码
extern void *memcpy(void *dest,void *src,unsigned int count);#include <string.h> 功能:由src所指内存 ...
- memset,memcpy,strcpy的使用与区别
1.memset 原型: extern void *memset(void *buffer, int c, int count); 功能: 把buffer所指内存区域的前count个字节设置成 ...
- memcpy 与strcpy的区别
C/C++中mencpy的代码实现:https://www.cnblogs.com/goul/p/10191705.html C/C++中strcpy的代码实现:https://www.cnblo ...
- memcpy和strcpy的区别
strcpy和memcpy主要有以下3方面的区别. 复制的内容不同.strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组.整型.结构体.类等. 复制的方法不同.strcpy不需要指 ...
- C的memcpy和strcpy的区别
strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而 ...
- memset,memcpy,strcpy
http://www.cppblog.com/junfeng568/archive/2006/03/11/4022.html
- memset,memcpy,memcmp用法
void* memset(void *s, int ch, size_t n); 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值. 例如:memset(lpMyStruct ...
随机推荐
- C++ 中list、vector和deque比较[转]
转自 http://blog.csdn.net/xiaolajiao8787/article/details/5882609 类型 Vector Deque List 内存管理 Poor Good p ...
- Cocos2d-x获取随机数
计算机是无法产生真正的随机数的,都是伪随机.获取随机数的方式和算法多种多样,这里只给出一种方法,基于最新的C++11. 1 2 3 4 5 #include <random> std::u ...
- nand flash 和nor flash 区别
NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...
- POJ2115 - C Looooops(扩展欧几里得)
题目大意 求同余方程Cx≡B-A(2^k)的最小正整数解 题解 可以转化为Cx-(2^k)y=B-A,然后用扩展欧几里得解出即可... 代码: #include <iostream> us ...
- CentOS下源码安装Apache2.4+PHP5.4+MySQL5.5
一.准备(把所有的源文件放在‘/home/yuanjun’目录下) apr http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz apr-util ...
- POJ3107--Godfather(树的重心)
vector建图被卡了..改为链式前向星500ms过的..差了四倍多?... 表示不太会用链表建图啊..自己试着写的,没看模板..嗯..果然错了..落了一句话orz 树的重心就是找到一个树中一个点,其 ...
- Blot消息处理者
- 成都Uber优步司机奖励政策(2月3日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 国外一些好用的UX/UI设计工具和资源分享
国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...
- CAS 之 集成RESTful API
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...