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 ...
随机推荐
- HDU 1953
#include<stdio.h> #include<math.h> long long int euler(long long int n) { long long int ...
- [转]NHibernate之旅(13):初探立即加载机制
本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制——延迟加载.其本质就是使用GoF23中代理模式 ...
- [liu yanling]规范软件测试流程
测试计划 做任何事情都会有输入输出,对于测试过程我们可以把输入理解为测试计划.测试环境准备.测试工具的选择等等,输出可以理解为测试结果.测试用例设计即可以理解为以测试计划为输入的输出,也可以理解为以测 ...
- 查看ssh服务开启状态
root@dbaudit-desktop:/etc/init.d# /etc/init.d/ssh status * sshd is running 或者这样检查:root@dbaudit-deskt ...
- Spring笔记(二)Core层
Spring用一种非入侵的方式来管理程序,模块结构图如下: .Core层 IOC(控制反转):应用本身程序不负责依赖对象的创建及维护,依赖对象的创建及维护有外设容器负责,即:IOC: DI(依赖注 ...
- HW4.34
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- iOS DES 加密转base64
//用法 加密转base 64 NSString *str = [self base64StringFromText:@"qingjoin" withKey:@"ke ...
- Android Studio更新失败
解决方案: Windows平台下 如果是运行的Android studio是32位的需要在修改一下文件: 在andriod studio的启动目录下.找到studio.exe.vmoptions这个文 ...
- 【开发工具 - Git】之Git使用案例
本帖主要介绍一下Git在实际项目开发中的使用流程,包括克隆.暂存.提交.推送.拉取.分支.冲突解决等,暂时还不包括回退. 1.首先需要安装Git,下一步下一步就行,这里就不说了.值得一提的是,如果Gi ...
- hdu 4635 Strongly connected(Tarjan)
做完后,看了解题报告,思路是一样的.我就直接粘过来吧 最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边,那么要使得边数尽可能的多,则X部肯定是一个完全图,Y部也是,同时X部 ...