strcpy, strcmp, strlen, memcpy 实现
来源:互联网 发布:淘宝两个钻花多少钱了 编辑:程序博客网 时间:2024/05/18 21:47
#include <assert.h>#include <string.h>#include <stdlib.h>#include <stdio.h>char *StrCpy(char *dest, const char *src){ assert((dest != NULL) && (src != NULL)); char *str = dest; while ((*dest ++ = *src ++) != '\0'); return str;}int Strlen(const char *str){ assert((str != NULL)); int len = 0; while (*str ++) { len++; } return len;}int StrCmp(const char *str1, const char *str2){ assert((str1 != NULL) && (str2 != NULL)); int rt = 0; while ( !(rt = *(unsigned char *)str1 - *(unsigned char*)str2 ) && *str2) { str1 ++; str2 ++; } if (rt > 0) { rt = 1; } else if (rt < 0) { rt = -1; } return rt;}//为了解决内存重叠的现象 void *MemCpy(void *dst, const void *src, size_t count){ char *pdst = static_cast<char *>(dst); const char *psrc = static_cast<const char *>(src); if (pdst > psrc && pdst < psrc + count) { for (int i = count - 1; i >= 0; i--) { pdst[i] = psrc[i]; } } else { for (int i = 0; i < count; i++) { pdst[i] = psrc[i]; } } return dst;} // memcpy 实现源码void * __cdecl memcpy ( void * dst, const void * src, size_t count ){ void * ret = dst; while (count--) { *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1; } return(ret);} int main(){ char str2[100] = "abcd"; char *str1 = (char *)malloc(100); str1= str2 + 2; //考虑了内存重叠 MemCpy(str1, str2, 5); printf("调用MemCpy后str1的内容: %s\n", str1); //未考虑内存重叠 memcpy(str1, str2, 5); printf("调用memcpy后str1的内容: %s\n", str1); while(1);}
- strcpy, strcmp, strlen, memcpy 实现
- strcpy memcpy strcmp strcat strlen实现源码
- strcpy, strcat, strcmp, strlen,memcpy
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现
- memcpy, strcpy, strlen, strcmp, itoa, atoi 的函数实现
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- memcpy strcpy strlen strcmp函数记录
- strcat,strcpy,strcmp,strlen,memcpy函数原型
- strcpy memcpy strcat strcmp memset strlen
- strcpy、strncpy与memcpy strlen strcat strcmp
- strlen(),strcpy(),strncpy(),strcmp(),memcpy(),memncmp()函数
- strcmp, strcpy, memcpy, strnicmp 实现
- strcpy/strlen/strcmp的实现
- strcat, strcpy, strlen, strcmp实现
- 位图文件结构及MFC显示
- 创建互斥对象,让程序只运行一个。
- 非常感人的情感日志:这些话看哭了很多人
- UIImageView的详细讲解
- git 用法
- strcpy, strcmp, strlen, memcpy 实现
- 英特尔杨叙:Win 8是计算设备创新的开始
- DECLARE_SERIAL(class_name)
- 美国航母杀入南海:中国最强机群出击(图)
- 动态规划
- 软件测试
- Postgresql:动态sql的例子
- log4net配置(web中使用log4net,把web.config放在单独的文件中)
- 中日韩开源大赛,tcpcopy进入国内4强