#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. 一个demo让你彻底理解Android中触摸事件的分发

    注:本文涉及的demo的地址:https://github.com/absfree/TouchDispatch 1. 触摸动作及事件序列 (1)触摸事件的动作 触摸动作一共有三种:ACTION_DOW ...

  2. Python 零碎信息-基础 01

    1. """ 可以插入多行文字. print """ abC 123' 456''" #单引号, 双引号, 也没有关系 " ...

  3. MONyog-数据库性能监控工具

    一.安装步骤 较为简单,网上可以搜索到,此处不做详细说明. 二.使用图解 此处介绍监控数据库连接量.并发量.吞吐量.响应时间等功能 1.设置连接需要监控的数据库 打开:http://127.0.0.1 ...

  4. 火狐浏览器(FireFox)安装Flash插件失败处理方法

    最近不知道怎么了,总是嫌弃IE,可能是被网络流量监测的网址给搞得了,弄了火狐浏览器,也安装了猎豹,这里不对浏览器做评价 好多朋友安装好火狐(FireFox)的时候发现之前不是有装IE的Flash播放插 ...

  5. Android基础------SQLite数据库(一)

    1.SQLite介绍 SQLite是一款非常流行的嵌入式数据库,它支持SQL操作,并且只用很少的内存. Android在运行时集成了SQLite,所有每个Android应用程序都可以使用SQLLite ...

  6. 【python】python字符串前面加u,r,b的含义

    1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出 ...

  7. bzoj4760[USACO2017 Jan]Hoof,Paper,Scissors

    题意:玩n次剪刀石头布,对方每次出什么已经知道了.你出的招数必须是连续的几段(不能超过k+1段),问你最多赢几次.(n<=100000,k<=20) 正常做法:f[i][j][k]表示前i ...

  8. 优先队列实现 大小根堆 解决top k 问题

      摘于:http://my.oschina.net/leejun2005/blog/135085 目录:[ - ] 1.认识 PriorityQueue 2.应用:求 Top K 大/小 的元素 3 ...

  9. hihoCoder#1838 : 鎕鎕鎕 贪心

    ---题面--- 题解: 神奇的贪心题,,,感觉每次做贪心题都无从下手... 我们首先按照a对所有卡片从小到大排序,然后从1开始,从连续的两张牌中取b最大的,最后一张单出来的也取了. 可以证明,这样的 ...

  10. BZOJ2820:YY的GCD——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2820 Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...