#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h> char *Mystrstr(const char *string, const char *strCharSet)
{
if (NULL == string)
{
return (char *)string;
}
if (NULL == strCharSet)
{
return NULL;
}
int nLen1 = strlen(string);
int nLen2 = strlen(strCharSet); for (int i = ; i < nLen2; i++)
{
for (int j = ; j <nLen1; j++)
{
if (strCharSet[i] == string[j])
{
int nPos = j;
while ( (i < nLen2) &&(strCharSet[i] == string[j]))
{
i++;
j++;
}
if (i == nLen2)
{
return (char *)&string[nPos];
}
i = nPos;
}
}
}
return NULL;
} char *Mystrcpy( char *strDestination, const char *strSource )
{
if (strDestination == NULL && strDestination == NULL)
{
exit();
} while (*strSource != '\0')
{
*strDestination++ = *strSource++;
}
*strDestination = '\0';
return strDestination;
} void *Mymemset( void *dest, int c, size_t count )
{
char *pszDest = (char *)dest;
if (pszDest == NULL)
{
exit();
}
if ( == count)
{
return dest;
}
for (size_t i = ; i < count; i++)
{
*pszDest++ = c;
}
return dest;
} void* MyMemcpy( void *dest, const void *src, int nCount )
{
if (NULL == dest || src == NULL)
{
return NULL;
}
char *pszDest = (char *)dest;
const char *pszSrc = (char *)src; if (pszDest > pszSrc && pszDest < pszSrc + nCount)
{//有重复(pszDest的位置 在pszSrc里面)
for (int i = nCount - ; i >= ; i--)
{//从后往前拷贝
pszDest[i] = pszSrc[i];
}
}
else
{
for (int i = ; i < nCount; i++)
{
pszDest[i] = pszSrc[i];
}
}
return dest;
} double Myatof( const char *string )
{
bool IsNegative = false;
bool IsInt = true;
double dblResult = ;
int i = ;
while (*string != '\0')
{
switch(*string) {
case ' ':
string++;
break;
case '-':
IsNegative = true;
string++;
break;
case '+':
IsNegative = false;
string++;
break;
case '.':
IsInt = false;
string++;
break;
default:
if (IsInt)
{
dblResult = dblResult* + (*string - '');
string++;
}
else
{
dblResult += (*string - '') / pow(, i++);
string++;
}
break;
}//end_of_switch }//end_of_while return IsNegative? -dblResult : dblResult;
} int main()
{
char szBuf[];
memset(szBuf, , sizeof(szBuf));
for (int i = ; i < ; i++)
{
szBuf[i] = 'a' + i;
}
MyMemcpy(&szBuf[], &szBuf[], );
printf("%s\n", szBuf);
return ;
}

重写strstr、strcpy、memcpy、memset、atof算法的更多相关文章

  1. C++语法之-------strcpy,memcpy,memset

    1.strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#i nclude 功能:把src所指由NULL结束的字符串复制到dest所指的数组 ...

  2. strcpy, memcpy, memset函数

    一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src);   头文件:#include <string.h> 和 #inclu ...

  3. strcpy,memcpy,memset函数实现

    strcpy 实现,只能拷贝字符串 char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) &am ...

  4. [VC]strcpy memcpy memset区别与简介

    strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...

  5. memmove、memcpy、strcpy、memset的实现

    memmove.memcpy.strcpy.memset 原型为: void *memmove( void* dest, const void* src, size_t count ); char*  ...

  6. c/c++ 常见字符串处理函数总结 strlen/sizeof strcpy/memcpy/strncpy strcat/strncat strcmp/strncmp sprintf/sscanf strtok/split/getline atoi/atof/atol

    这里总结工作中经常用到的一些c/c++的字符串处理方法,标黑的是使用频率较高的   1.strlen函数:计算目标字符串长度,    格式:strlen(字符指针指向区域) 注意1:①不包含字符串结束 ...

  7. 访谈将源代码的函数 strcpy/memcpy/atoi/kmp/quicksort

    一.社论 继上一次发表了一片关于參加秋招的学弟学妹们怎样准备找工作的博客之后,反响非常大.顾在此整理一下,以便大家复习.好多源自july的这篇博客,也有非常多是我自己整理的.希望大家可以一遍一遍的写. ...

  8. 面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort

    http://blog.csdn.net/liuqiyao_01/article/details/26967813 二.stl模板函数 1.strcpy char * strcpy( char *st ...

  9. strcpy,memcpy,memmove和内存重叠分析

    一:strcpy函数用法和实现: /* GNU-C中的实现(节选): */ char* strcpy(char *d, const char *s) { char *r=d; while((*d++= ...

随机推荐

  1. iOS-加载html字符串

    NSMutableAttributedString * attrString =[[NSMutableAttributedString alloc] initWithData:[resultModel ...

  2. 【week2】 四则运算改进

    四则运算满足简单加减乘除,以及包含括号的复杂四则运算. 代码描述: 1.采用random随机数产生要参与计算的数字,以及运算符号 2.采用Scanner获取控制台输入的结果,与计算出来的结果进行比对, ...

  3. sublime Text3 如何自动排版代码

    安装 html beautiful 然后按ctrl+shift+alt+f

  4. Python35 升级 pip

    使用pip安装插件的时候报错: You are using pip version 8.1.1, however version 9.0.1 is available.You should consi ...

  5. MATLAB strcmp

    比较两个输入字符串是否相等 c = strcmp(str1,str2)比较字符串 str1 与 str2 ,若完全相等则返回 1 ,不相等返回 0 str1 = 'hello'; str2 = 'he ...

  6. [HNOI2007][BZOJ1185] 最小矩形覆盖 [凸包+旋转卡壳]

    题面 BZOJ题面 前置芝士 建议先学习向量相关的计算几何基础 计算几何基础戳这里 思路 用这道题学习一下凸包和旋转卡壳 首先是凸包部分 凸包 求凸包用的算法是graham算法 算法流程如下: 找到$ ...

  7. bzoj4321: queue2(DP)

    woc万能的OEIS大法!这题居然是有递推式的QAQ http://oeis.org/A002464 这题的状态想不出来T^T... f[i][j][0/1]表示前i个编号,有j对相邻的编号位置上相邻 ...

  8. Java的各种中文乱码解决方法

    一.Servlet输出乱码 1. 用servlet.getOutStream字节流输出中文,假设要输出的是String str ="钓鱼岛是中国的,无耻才是日本的". 1.1 若是 ...

  9. httpClient需要的jar包

  10. PhoneGap API介绍:Camera

    本文将介绍PhoneGap API——Camera:使用设备的摄像头采集照片,对象提供对设备默认摄像头应用程序的访问. 方法: camera.getPicture 参数: cameraSuccess ...