memset,memcpy,strcpy 的用法
2007-03-15 17:12
483 查看
(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
{
char s[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 _test st[10];
则用 memset(st,0,sizeof(struct _test)*10);
(2)memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#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的指针。
例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。
(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!
//Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
原型: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
{
char s[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 _test st[10];
则用 memset(st,0,sizeof(struct _test)*10);
(2)memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#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的指针。
例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。
(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!
//Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
相关文章推荐
- C函数之memcpy()、Memset ()、Strcpy ()函数用法
- strcpy,memcpy,memset的用法与区别
- memset()、memcpy()、strcpy()的用法
- memset、memcpy、memmove的常见用法和区别,以及memcpy与strcpy的区别
- strcpy()、memcpy()与memset()的用法比较
- memcpy strcpy memset 函数用法
- std::strcpy、strncpy、memset、memcpy用法
- memcpy,strcpy,memset,strcmp相关函数的用法
- memset ,memcpy 和strcpy 的根本区别?
- Memset、Memcpy、Strcpy 的作用和区别(转)
- strcpy()、memcpy()、memmove()、memset()及其应用
- strcpy,memset,memcpy区别
- strcpy、memcpy和memset的区别及memcpy在什么情况下会失败
- c++ memset 、memcpy、strcpy、strlen、strcat、ASCII 问题
- strcpy()、memcpy()、memmove()、memset() 、strcmp()、strlen()、strcat()的实现
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr,
- memset ,memcpy 和strcpy 的区别
- Memset、Memcpy、Strcpy 的作用和区别
- strcpy()、memcpy()、memmove()、memset()的实现
- 牛客 题库 memcpy memmove memset strcpy