- WinCE Security...
- xdebug配置说明
- VC++ 获取文件的创建、修...
- ASP进度条
- 简单代理服务器C代码实现(S...
- 程序设计竞赛试题选(02)
- 如何在ASP程序中打印Acc...
- UTF-8和16进制区间
- ASP实用技巧:强制刷新和判...
- 运行中程序删除自己的方法
- asp提高首页性能的一个技巧
- [J2EE]J2EE 应用服务器技术
- VB变量命名规范
- C语言常见错误小结
- (摘自网络)如何在IIS中调...
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;}