memcpy函数
memcpy是内存拷贝函数,它的功能是从source的开始位置拷贝size_t num个字节的数据到destination。如果destination存在数据,将会被覆盖。memcpy函数的返回值是destination的指针。memcpy函数定义在string.h头文件里。基本格式是。
void* memcpy(void* destination, const void* source, size_t num);
void* destination 目标内存 const void* source 源内存 size_t num 字节个数
如下举一个例子
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
struct {
char name[40];
int age;
}person, person_copy;
int main()
{
char myname[] = "Pierre de Fermat";
/*using memcpy to copy string: */
memcpy(person.name, myname, strlen(myname) + 1);
person.age = 46;
/*using memcpy to copy structure:*/
memcpy(&person_copy, &person, sizeof(person));
printf("person_copy: %s, %d \n", person_copy.name, person_copy.age);
return 0;
}
运行结果为:
memset函数
extern void *memset(void *buffer, int c, int count)
其中,buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度。
这个函数在socket中多用于清空数组.如:原型是
memset(buffer, 0, sizeof(buffer))
memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’。
例如:
char a[100];
memset(a, ‘/0’, sizeof(a));
memset可以方便的清空一个结构类型的变量或数组。
例如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};