重写strstr、strcpy、memcpy、memset、atof算法
#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算法的更多相关文章
- C++语法之-------strcpy,memcpy,memset
1.strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#i nclude 功能:把src所指由NULL结束的字符串复制到dest所指的数组 ...
- strcpy, memcpy, memset函数
一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #inclu ...
- strcpy,memcpy,memset函数实现
strcpy 实现,只能拷贝字符串 char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) &am ...
- [VC]strcpy memcpy memset区别与简介
strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...
- memmove、memcpy、strcpy、memset的实现
memmove.memcpy.strcpy.memset 原型为: void *memmove( void* dest, const void* src, size_t count ); char* ...
- 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:①不包含字符串结束 ...
- 访谈将源代码的函数 strcpy/memcpy/atoi/kmp/quicksort
一.社论 继上一次发表了一片关于參加秋招的学弟学妹们怎样准备找工作的博客之后,反响非常大.顾在此整理一下,以便大家复习.好多源自july的这篇博客,也有非常多是我自己整理的.希望大家可以一遍一遍的写. ...
- 面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort
http://blog.csdn.net/liuqiyao_01/article/details/26967813 二.stl模板函数 1.strcpy char * strcpy( char *st ...
- strcpy,memcpy,memmove和内存重叠分析
一:strcpy函数用法和实现: /* GNU-C中的实现(节选): */ char* strcpy(char *d, const char *s) { char *r=d; while((*d++= ...
随机推荐
- python爬虫 --- 简书评论
某些网站的一些数据是通过js加载的 ,所以爬取下来的数据拿不到, 找到评论的地址 .进行请求获取评论数据 #coding=utf-8 import json import requests def r ...
- TreeView的使用
用于显示多级层次关系 每一项是一个节点,也就是一个Node,是一个TreeNode节点,Nodes是该控件节点的集合. selectedNode用户选中的节点,如果没有选中则为null 1. 当选中后 ...
- MySQL错误解决10038
[错误解决]本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止 标签: mysql计算机 2016-12-01 17:49 5508人阅读 评论(2) 收藏 举报 ...
- Matlab 之 im2col 【转】
函数原型: B=im2col(A,[m n],block_type) 功能:将矩阵A分为m×n的子矩阵,再将每个子矩阵作为B的一列 (1)当block_type为distinct时,将A分解为互不重叠 ...
- HttpServletRequestWrapper 是HttpServletRequest的包装类 ·关系相当于 int 与integer的关系
HttpServletRequestWrapper 是HttpServletRequest的包装类 ·关系相当于 int 与integer的关系
- 算法语言Scheme修订6报告 R6RS简体中文翻译
算法语言Scheme修订6报告 R6RS简体中文翻译 来源 https://r6rs.mrliu.org/ MICHAEL SPERBERR. KENT DYBVIG, MATTHEW FLATT ...
- 【刷题】BZOJ 1143 [CTSC2008]祭祀river
Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成 ...
- [CQOI2012]交换棋子 网络流
---题面--- 题解: 一开始很快想出了一个接近正解的建图方法,但其实是错误的,不过还是骗了70分_(:зゝ∠)_ 首先我们可以观察到棋子有限,但费用多种,其实也就相当于限制了流量,找最小费用 对于 ...
- BZOJ3196 & 洛谷3380:二逼平衡树——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3196 https://www.luogu.org/problemnew/show/P3380 (题 ...
- BZOJ2668:[CQOI2012]交换棋子——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2668 https://www.luogu.org/problemnew/show/P3159#sub ...