memcpy,strcpy,memset的函数实现
2014-07-03 17:04
357 查看
memcpy,strcpy,memset的函数实现
/**********************************************************
公司考试这种题目主要考你编写的代码是否考虑到各种情况,是否安全(不会溢出)各种情况包括:1、参数是指针,检查指针是否有效2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳出3、读写权限检查4、安全检查,是否会溢出
**********************************************************/
/* 功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。*/
void memcpy(void* dest, void* src, int count)
{
char* pbTo = (char*)dest;
char* pbFrom = (char*)src;
assert(dest != NULL && src != NULL); //检查输入指针的有效性
assert(pbTo>=pbFrom+count pbFrom>=pbTo+count);//检查两个指针指向的内存是否重叠
while(count-->0) { *pbTo++ = *pbFrom++; }
return;}
/* 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指
内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。*/
char* strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* address=dest;
while((*dest++=*src++) != '\0')
{}
return address;}
/* 功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。*/
void* memset(void* buffer, int c, int count)
{
char* pvTo=(char*)buffer;
assert(buffer != NULL);
while(count-->0)
{ *pvTo++=(char)c; }
return buffer;}
/**********************************************************
公司考试这种题目主要考你编写的代码是否考虑到各种情况,是否安全(不会溢出)各种情况包括:1、参数是指针,检查指针是否有效2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳出3、读写权限检查4、安全检查,是否会溢出
**********************************************************/
/* 功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。*/
void memcpy(void* dest, void* src, int count)
{
char* pbTo = (char*)dest;
char* pbFrom = (char*)src;
assert(dest != NULL && src != NULL); //检查输入指针的有效性
assert(pbTo>=pbFrom+count pbFrom>=pbTo+count);//检查两个指针指向的内存是否重叠
while(count-->0) { *pbTo++ = *pbFrom++; }
return;}
/* 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指
内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。*/
char* strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* address=dest;
while((*dest++=*src++) != '\0')
{}
return address;}
/* 功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。*/
void* memset(void* buffer, int c, int count)
{
char* pvTo=(char*)buffer;
assert(buffer != NULL);
while(count-->0)
{ *pvTo++=(char)c; }
return buffer;}
相关文章推荐
- 几个重要库函数的实现-strcpy,strncpy,memcpy,memset
- 几个重要库函数的实现-strcpy,strncpy,memcpy,memset
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- memcpy,strcpy,memset,memmove的函数实现
- C语言字符串相关库函数的实现strcpy、memcpy、strncpy、strcat、strncpy、memset、memcpy、strcpy
- 函数实现-memcpy-strcpy-memmove-memset
- 几个重要库函数的实现-strcpy,strncpy,memcpy,memset
- 函数实现-memcpy-strcpy-memmove-memset
- 模拟实现函数库中的常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove,8实现memset
- 几个重要库函数的实现-strcpy,strncpy,memcpy,memset
- 【转】字符串操作函数 C语言实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... ) .
- 转载:函数实现-memcpy-strcpy-memmove-memset
- 几个重要库函数的实现-strcpy,strncpy,memcpy,memset
- strcpy 和 memcpy两个函数的实现
- Strcpy与memcpy两函数的实现