memcpy strcpy memset

Aspen Plus下载教程Aspen Plus V14 保姆级安装步骤(附安装包) 26、在WlmAdmin界面中,依次点击【Subnet Servers】、【admin】、【Add Feature】、【From a File】、【To Server and its File】。35、在产品选择页面,勾选需要安装的所有产品(重要:不要勾选【Aspen Online(Plant Data)】),然后点击【File Location】。回到桌面,点击任务栏的【开始菜单】,在【所有应用】中找到【Aspen Plus V14】软件图标,将其拖到桌面上创建快捷方式。9、这里可以更改软件的安装位置。 阅读详情

(1) Memset
原型: extern void*memset(void *buffer, int c, int count);
用法:
#include<string.h>

功能:把buffer所指内存区域的前count个字节设置成字符 c。

说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字符

例如:
char a[10];
memset(a, '\0', sizeof(a));
memset
可以方便的清空一个结构类型的变量或数组。

如:
struct _test{ chars[10];
int x;
int y;
};
变量
struct _test st;
(1)
一般清空st的方法如下
:
st.s[0] = '\0'; st.x =0; st.y =0;
(2)
用memset方法如下:

memset(&st,0,sizeof(struct _test));
数组:
struct _testst[10];
memset(st,0,sizeof(struct _test)*10); //
清空方法

//memset
源码的实现 C语言

#include <mem.h>
void* memset(void* s, int c, size_t n)
{
unsigned char* p = (unsigned char*) s;
while (n > 0)
{
*p++ = (unsigned char) c;
--n;
}
return s;
}


(2)memcpy

原型:extern void*memcpy(void*dest,void*src,unsignedintcount); 用法: #include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明: src和dest所指内存区域不能重叠,函数返回指向dest的指针.可以拿它拷贝任何数据类型的对象。

例如:
char a[10],b[5];
memcpy(b, a, sizeof(b)); /*
注意如果用sizeof(a),会造成b的内存地址溢出
*/
(3) Strcpy

原型: extern char*strcpy(char *dest,char *src);
用法:
#include<string.h>
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

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

例如:
chara[100],b[50];
strcpy(a,b);
如用
strcpy(b,a);
要注意a中的字符串长度(第一个‘\0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。

假如有如下代码,请问输出为多少?
#include "stdio.h"
main()
{ char dest[3];
char str[6]="Hello";
strcpy(dest,str);
printf("%s\n",dest);
}
编译输出如下结果
:
Hello //
没有输出乱码,有点怪怪的为什么?

分析:
1>str
中字符串的长度大于dest 的内存长度3.为什么str字符串还能完拷贝到dest 中呢
?
来看看 strcpy的源代码实现
:
char *strcpy(char *strDest,const char *strSrc)
{
assert((strDest!=NULL)&&(strSrc !=NULL)) //
判断指针是否合法,即分配内存,指向某块确定区域

char *address = strDest; //
记住目标地址的起始值
while((*strDest++ = *strSrc++)!='\0') //
先拷贝,后判断,这样就不用在拷贝完了后,再加一句
NULL; // *strDest = '\0'; -->
即加一个结束符.因为字符串结束已拷贝了.
return address; //
返回目标首地址的值。

}
//
从上面的代码可以看出,strcpy函数,假定strDest的内存空间是足够可以放下strSrc的内容的
.
//
也就是说使用者,在使用strcpy函数时,应使 (strDest内存空间)>= (strSrc内存空间
)
//
在调用 strcpy(dest,str);时,while((*strDest++= *strSrc++)!='\0') 没有判断strDest的内存是否够,而是将srtSrc的内容直接拷贝到strDest,当拷到'\0'就结束
.
//
因此在使用printf("%s\n",dest);时输出遇到'\0'时停此输出.所以会输出
: Hello

(4)
三者区别
memset
主要应用是初始化某个内存空间。
memcpy
是用于copy源空间的数据到目的空间中。

strcpy
用于字符串copy,遇到‘
\0’,将结束。
如果理解了这些,就能知道它们的区别:
例如初始化某块空间的时候,用到memcpy,那么就显得笨拙

int m[100]
memset((void*)m,0x00,sizeof(int*100); //Ok
!

memcpy((void*)m,"\0\0\0\0....",sizeof(int)*100); //Not Ok
一.函数原型

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);
#include <string.h>
功能:由src所指内存区域复制count个字符串到dest所指内存区域
.
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针
.
memset extern void *memset(void *buffer,int c,int count);
#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符
c
说明:返回指向buffer的指针
.
二.区别


memset
用来对一段内存空间全部设置为某个字符,一般用于在对定义的字符串初始化为' '或者'\0';
例
: char a[100];memset(a,'\0',sizeof(a));
memcpy
是用来做内存拷贝,可以用来拷贝任何数据类型的对象,可以指定拷贝的数据长度;

例
: chara[100],b[50];
memcpy(b,a,sizeof(b));
//
注意:如果使用sizeof(a),会造成内存溢出

mem
是一段内存,他的长度,必须自己记住.memcpy是见着什么拷贝什么。

strcpy
就只能拷贝字符串,它遇到'\0'就结束拷贝;

例:
char a[100],b[50];strcpy(a,b);
如用strcpy(b,a)要注意a中的字符串长度(第一个'\0'之前) 是否超过50,如果超过,则会造成b的内存溢出
.
它是不会拷贝'\0'的,所以一般还有加一个语句
: *a='\0';
三.使用技巧


memset
可以方便的清空一个数据结构的变量或数组.
如
: structsample_struct {
char csName[16];
int iSeq;
int iType;
};
对于变量

struct sample_struct stTest;
一般情况下,初始化stTest的方法
:
stTest.csName[0]='\0';
stTest.iSeq=0;
stTest.iType=0;
而用
memset:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组
:
struct sample_struct TEST[100];
memset(TEST,0,sizeof(struct sample_struct)*100);

K-GAS解读(08) 大众kgas标准,大众及其供应商kgas 阅读详情

相关推荐

baostock实战:如何用Python批量下载多只股票的历史数据(含常见错误排查)

本文详细介绍了如何使用Python和baostock库批量下载多只股票的历史数据。内容涵盖从环境搭建、代码标准化到构建稳健的批量下载框架的全过程,并重点提供了高级错误处理、网络重试、数据验证及内存管理等实战解决方案,帮助用户高效构建股票数据处理流水线。

nice1的博客 1081

Memset、Memcpy、Strcpy 的作用和区别(来源于网络并整理)

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

a936676463的专栏 649

拥有AI助手便能解放双手?——抖音直播脚本的生成

科技改变生活,AI助手帮你完成抖音创作!

Scientist_的博客 2352

Memset、Memcpy、Strcpy 的作用和区别(转)

(1) Memset   原型:   extern void *memset(void *buffer, int c, int count);                用法:  #include                功能: 把buffer所指内存区域的前count个字节设置成字符 c。             说明: 返回指向buffer的指针。用来对一段

梦幻之巅 1649

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

华为云HCS解决方案笔记HUAWEI CLOUD Stack【面试篇】

华为云解决方案介绍、华为云服务介绍,华为云网络平面规划等

weixin_48375618的博客 1万+

strcpy和memcpy的区别

strcpy和memcpy的区别

jiaoty19的博客 7097

第8章 Stata主成分分析与因子分析

在进行数据统计分析时,还往往会遇见变量特别多的情况,而且很多时候这些变量之间还存在着很强的相关关系或者说变量之间存在着很强的信息重叠,如果我们直接对数据进行分析,一方面会带来工作量的无畏的加大,另一方面还会出现一些模型应用的错误,于是主成分分析与因子分析应运而生。这两种分析方法的基本思想都是在不损失大量信息的前提下,利用较少的独立变量来替代原来的变量进行进一步的分析。 8.1主成分分析 基本思想是将众多的初始变量整合成少数几个互相无关的主成分变量,而这些新变量尽可能地包含...

qq_45112156的博客 5万+

memcpy与strcpy的详细理解

strcpy与memcpy的用法。little-endian和big-endian(litter-endian:高位字节数据存放在内存高地址处,低位数据存放在内存低地址处。bit-endian:高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。

weixin_63226758的博客 2190

21天学会PCIe专栏(4.3)--PCIe配置方法

通过本节的学习,你应该对PCIe配置方法有了更深入的了解。软件配置方法包括直接访问和间接访问,可以通过特定的I/O指令或系统调用进行配置。硬件配置方法包括通过BIOS/UEFI设置和跳线设置,可以根据需要修改PCIe设备的配置参数。

xiaoheshang_123的博客 722

龙芯2K1000 OTG双模驱动深度解析

是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。

weixin_44932366的博客 376

详解库函数strcpy,memcpy与memmove以及函数的自我实现

从库函数strcpy到memcpy再到memmove的过程,我们可以看出,事物的发展是不断完善的,没有一个事物生来就是完美的,学习就是让不完美的我们不断完善的一个过程,也许我们永远也都达不到完美,但是只要活在当下,每天进步一点,就足够了,所以,诸君尽管大胆的向前走,明天会更好。

谁在夜里看海.的博客 2243

网络无线AP信号走场测试软件(Ekahau 使用说明)

每次开启 Ekahau 软件需要重复此过程,才可以正常使用。 双击“Ekahau Pro activation.reg”,如下图所示; 点击“Yes”按钮 ,进行注册表合并; 点击“OK”按钮,确认; 运行“Ekahau Pro” 点击“Close”关闭提示; 点击“OK”,关闭提示; ...

Reyn_观极 6417

memset,memcpy,strcpy 的区别

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

4784

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

memset,memcpy,strcpy的区别

memset,memcpy,strcpy的区别 一.函数原型    strcpy    extern char *strcpy(char *dest,char *src);    #include    功能:把src所指由NULL结束的字符串复制到dest所指的数组中    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。    返

YUZHIBOYI的专栏 1327

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

strcpy memcpy memset

一、strcpy 函数原型:extern char* strcpy(char*dest,const char *src) 头文件:#include 功能:把从src地址开始含有' \o'结束符的字符串复制到以dest开始的地址空间 说明:src和dest 必须有足够空间来容纳src的字符串 返回:指向dest的指针 char *strcpy(char* strDestination,c

KLNL100的专栏 755

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++:memset ,memcpy 和strcpy 的根本区别(转)

转自:https://blog.youkuaiyun.com/stock888/article/details/3930847 C++:memset ,memcpy 和strcpy 的根本区别(转) #include "memory.h" memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', siz...

qq_37871669的博客 237

strcpy、strncpy、strcat、strncat、strcmp、strncmp、memcpy、memset的实现。

1.strcpy的实现。 a.把src所指向的由NULL结束的字符串复制到dest所指的数组中. b.src和dest所指内存区域不可以有重叠,且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针. c.strcpy是只能对字符串进行拷贝,遇到’\0’结束。如果src的结尾不是‘\0’的话,系统会在src的结尾处自动加一个’\0’. 缺点:没有指定长度,如果dst比较小,就会容易...

Leo 470

手写几个重要的库函数 strcpy,strncpy,memcpy,memset

手写几个重要的库函数 strcpy,memcpy,memset 相关连接:http://blog.youkuaiyun.com/hyhyl1990/article/details/7958263 http://blog.youkuaiyun.com/hackbuteer1/article/details/7343189 http://my.oschina.net/renhc/blog/36345 1.strcpy

tsh123321的博客 2927

strcpy memcpy和memset的区别

strcpy函数只能复制字符串,返回目标字符串的首地址 注意: strcpy为什么有返回值,有什么用? strcpy不需要返回值,这个返回值是为了增加灵活性如支持链式表达。 memcpy函数可以复制任意内容,例如字符数组、整型、结构体、类等。 注意: memcpy要考虑dest和src的地址重叠,这样造成的后果无法预知。 所以第一步dest必须在src的左边或者src+size右...

zz56z56的博客 724

strcpy,memcpy和memset的区别

strcpy函数的原型:char* strcpy(char* dest, const char* src); memcpy函数的原型:void *memcpy( void *dest, const void *src, size_t count ); memset函数的原型:memset(void *s, int ch,size_t n); strcpy,memcpy和memset主要...

矢月的博客 1459

memset ,memcpy 和strcpy 的根本区别?

http://www.cppblog.com/junfeng568/archive/2006/03/11/4022.html Memset  用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’; 例:char a[100];memset(a, '\0', sizeof(a));      memset可以方便的清空一个结构类型的变量或数组。

JUNGOU1的专栏 425

关于strcpy、memset、memcpy的使用详解

这次在工作上分别遇到过strcpy、memset、memcpy,也在网络上看到过一些关于三者区别的文章,罗列大概内容如下:  strcpy()来自C语言,在C++里得以保留。首先,要指明的是,C++里strcpy()里接受的参数是C-串,并非string,更不可 能是其他类型的数据。它表示一个字串的内容拷贝到另一个字串。拷贝会在源字串里第一个'/0'时停止拷贝. strcpy(目标字串,源字串)

CPPAlien的专栏 996

memset ,memcpy 和strcpy 的区别

memset ,memcpy 和strcpy 的区别

yanning199301的专栏 438

memset,memcpy,strcpy 的用法

(1) Memset 原型:extern void *memset(void *buffer, int c, int count);         用法:#include          功能:把buffer所指内存区域的前count个字节设置成字符c。         说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字符例:char a[10];mems

Mobidogs Blog 1962

memset strcpy memcpy 比较

memset用来对一段内存空间全部设置为某个字符。memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象。strcpy就只能拷贝字符串了,它遇到/0就结束拷贝。memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100] ;memset(a, /0, sizeof(a));memcpy用来做内存拷贝,你可

tattarrattat的专栏 1784
下一篇: c语言字节对齐
HeyITMan
博客等级 码龄14年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值