#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. lintcode-14-二分查找

    二分查找 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. 样例 在数组 ...

  2. LintCode-376.二叉树的路径和

    二叉树的路径和 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径. 一个有效的路径,指的是从根节点到叶节点的路径. 样例 给定一个二叉树,和 目标值 = 5: 返回: [      ...

  3. Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    身份证识别:https://github.com/wenchaosong/OCR_identify 遇到一个需求,要用手机扫描纸质面单,获取面单上的手机号,最后决定用tesseract这个开源OCR库 ...

  4. MATLAB中mat2gray的用法【转】

    函数简介 函数功能:实现图像矩阵的归一化操作.所谓"归一化"就是使矩阵的每个元素的值都在0和1之间.该函数在数字图像处理中经常用到. 调用格式: I = mat2gray(A, [ ...

  5. codeforces 987 D. Fair

    D. Fair time limit per test 2 seconds memory limit per test 512 megabytes input standard input outpu ...

  6. 【bzoj1334】[Baltic2008]Elect 背包dp

    题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党 ...

  7. [洛谷P3979]遥远的国度

    题目大意:有一棵$n$个点的树,每个点有一个点权,有三种操作: $1\;x:$把根变成$x$ $2\;u\;v\;x:$把路径$u->v$上的点权改为$x$ $3\;x:$询问以$x$为根的子树 ...

  8. [POI2007]ZAP-Queries && [HAOI2011]Problem b 莫比乌斯反演

    1,[POI2007]ZAP-Queries ---题面---题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$$ ...

  9. Android <Android应用开发实战> 学习总结杂项

    1.系统相册默认保存地址:android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Ca ...

  10. SAPI 包含sphelper.h编译错误解决方案

    原文连接地址:http://blog.csdn.net/believenow_notfuture/article/details/52191229 [转]SAPI 包含sphelper.h编译错误解决 ...