(1) Memset
原型: extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能: 把buffer所指内存区域的前count个字节设置成字符 c。
说明: 返回指向buffer的指针。用来对一段内存空间全部设置为某个字符
例如:
char a[10];
memset(a, ' ', sizeof(a));
memset可以方便的清空一个结构类型的变量或数组。
如:struct _test{char s[10];
int x;
int y;
};
变量 struct _test st;
(1)一般清空st的方法如下:
st.s[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);//清空方法
//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的指针。
例如: char a[100],b[50];
strcpy(a,b);
如用 strcpy(b,a);
要注意a中的字符串长度(第一个‘