memcpy memmove strcat strcopy strlen实现
来源:互联网 发布:怎么算是有编程天赋 编辑:程序博客网 时间:2024/06/04 19:23
1. 如何实现如下copy函数,高手指教:
void memcopy(void *s,void *t, int length)
/* 要求实现内存拷贝length长度内容,源为*t,目的为*s */
希望大家讨论,看如何正确的实现!
考虑到源地址和目的地址交叉的情况:
#include <stdio.h>
#include <memory.h>
#include <string.h>
//考虑到源地址和目的地址交叉的情况
void * my_memcpy( void *dest, const void *src, size_t count )
{
unsigned char *psrc = (unsigned char*) src;
unsigned char *pdst = (unsigned char*) dest;
if (!pdst || !psrc || count <= 0)
return dest;
if (psrc < pdst) // 目的地址比源地址高,从后开始拷贝
{
psrc += count-1;
pdst += count-1;
do {
*pdst-- = *psrc--;
} while(--count);
}
else if (psrc > pdst) // 目的地址比源地址低,从前开始拷贝
{
do {
*pdst++ = *psrc++;
} while (--count);
}
return dest;
}
void * __cdecl memmove (
void * dst,
const void * src,
size_t count
)
{
void * ret = dst;
if (dst <= src || (char *)dst >= ((char *)src + count)) {
/*
* Non-Overlapping Buffers
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
}
else {
/*
* Overlapping Buffers
* copy from higher addresses to lower addresses
*/
dst = (char *)dst + count - 1;
src = (char *)src + count - 1;
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst - 1;
src = (char *)src - 1;
}
}
return(ret);
}
2. 编写一个标准strcpy函数
char * strcpy( char *strDest, const char *strSrc )
{
char *address = strDest;
assert( (strDest != NULL) && (strSrc != NULL) );
while( *strDest++ = * strSrc++ );
return address;
}
3. strlen函数
size_t strlen( const char *str ) //输入参数const{
char *old = str;
assert( str != NULL ); //断言字符串地址非0
while( *str++ );
return str-old-1;
}
4.strcat实现
char *my_strcat(char *dest,char *src)
{
if ( NULL == dest || NULL == src)
{
return NULL;
}
while ( *dest++ != '/0');
dest -= 1;
while ( ( *dest++ = *src++) != '/0');
}
- memcpy memmove strcat strcopy strlen实现
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- strlen strcopy strcat memcpy strcmp的实现(都是数据的拷贝比较等)
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- strcpy,strcat,memcpy和memmove的实现
- 用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
- 汇编实现memcpy,memset,strcat,strlen
- 汇编实现memcpy,memset,strcat,strlen
- strcpy memcpy strcmp strcat strlen实现源码
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- 几个常用函数的实现strcpy,memcpy,memmove,strcat,strcmp
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp,memcpy,memmove
- strcpy,strcmp,strstr,strcat,memcpy,memmove的模拟实现
- 用Delphi开发视频聊天软件
- Excel 2007的功能区定制和开发
- first--I love you, my sweetheart.
- 交换机、集线器、路由器区别和使用浅谈
- 为企业找到最合适的人才——从微软招聘看新时代的招聘
- memcpy memmove strcat strcopy strlen实现
- 又见标题党——怒评《JavaScript核心技术》
- 三十岁以前不必在乎的29件事
- 二层交换机,三层交换机,四层交换机的区别
- JRE与JDK在启动应用服务器中的作用
- 国庆旅游——独山、箬寮原始森林
- Linux下socket实现网页抓取
- 三层交换机与路由器的比较
- Java网络编程准备