/*************************************************************************
> File Name: test.cpp
************************************************************************/
#include"stdlib.h"
#include"stdio.h"
#include"string.h" char *mystrcat(char *dest,const char *src)
{
char* temp = dest;
while(*dest != '\0')
{
dest++;
} while((*dest++ = *src++) != '\0'); return temp;
}
char *mystrncat(char *dest,const char *src,size_t n)
{ char* temp = dest;
while(*dest != '\0')
{
dest++;
} while(n--> && (*dest++ = *src++) != '\0'); return temp;
} void* mymemset(void *s, int c, size_t n )
{
unsigned char uc = c;
unsigned char *su = (unsigned char*)s;
while(n-->)
{
*su = uc;
su++;
}
} int mystrlen(const char* str)
{
return *str?(mystrlen(++str)+):;
/*
const char* eos = str;
while(*eos++);
return (eos-str-1);
*/
} void* mymemcpy(void*dst, const void* src,size_t size)
{ if(src==NULL || dst==NULL) return NULL;
void* ret = dst;
while(size--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst + ;
src = (char*)src + ;
}
return ret;
} void* mymemmove(void*dst, const void* src,size_t size)
{
if(src==NULL || dst==NULL) return NULL;
char* psrc;
char* pdst;
//存在覆盖,自后向前进行拷贝
if((src<dst) && (char*)src+size > (char*)dst)
{
psrc = (char*)src + size-;
pdst = (char*)dst + size-;
while(size--)
*pdst-- = *psrc--;
}
else
{
psrc = (char*)src;
pdst = (char*)dst;
while(size--)
{
*pdst++ = *psrc++;
}
}
} int mymemcmp(const void * ptr1, const void * ptr2, size_t num)
{
if(ptr1==NULL || ptr2==NULL || num<) return ; char* pch1 = (char*)ptr1;
char* pch2 = (char*)ptr2; while(num-- && *pch1++ == *pch2++);
return (pch1-pch2)<<;
} int mystrcmp ( const char * str1, const char * str2 )
{
if(str1==NULL || str2 ==NULL) return ; while(*str1 == *str2)
{
str1++;
str2++;
} return (*str1-*str2);
} int mystrncmp( const char * str1, const char * str2, size_t num )
{ if(str1==NULL || str2 ==NULL) return ; while(num-- && *str1 == *str2)
{
str1++;
str2++;
} return (*str1-*str2);
} int main()
{
char ch1[] = "hello";
char ch2[] = "herld";
// printf("strcat : %s\n", mystrncat(ch1,ch2,2)); printf("%d\n",mystrcmp(ch2,ch1)); printf("%d\n",mystrncmp(ch2,ch1,)); return ;
}

string函数的一些实现的更多相关文章

  1. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  2. string函数分析

    string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...

  3. PHP String 函数

    [http://www.w3school.com.cn/php/php_ref_string.asp ] PHP String 简介 String 字符串函数允许您对字符串进行操作. 安装 Strin ...

  4. lua string函数

    lua的string函数: 参数中的index从1开始,负数的意义是从后开始往前数,比如-1代表最后一个字母 对于string类型的值,可以使用OO的方式处理,如string.byte(s.i)可以被 ...

  5. PHP 5 String 函数

    PHP 5 String 函数 PHP String 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. 函数 描述 addcslashes() 返回在指定的字符前添加反斜杠的字符串. add ...

  6. c++string函数详解

    string,一个极为好用了函数,学好了这些函数,在模拟以及字符串问题上,回节省很多很多的写代码时间,代码复杂度以及错误率,那么这一类函数都有那些功能呢?我们来逐一介绍(让你大吃一惊,还有这种操作?) ...

  7. 常用string函数分析

    string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...

  8. c++:string函数

    string类的构造函数:string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化此外,string类还支持 ...

  9. C string 函数大全

    PS:本文包含了大部分strings函数的说明,并附带举例说明.本来想自己整理一下的,发现已经有前辈整理过了,就转了过来.修改了原文一些源码的问题,主要是用char *字义字符串的问题,导致程序运行时 ...

  10. C++string函数之strcat_s

    跟上一篇的strcpy_s一样,是新推出的较为安全的strcat函数 strcat_s脱胎于strcat,用于两个字符串的链接,strcat(str1,str2)直接返回新的str1. 但在vs200 ...

随机推荐

  1. sublime设置html在浏览器打开

    1.快捷键 Ctrl+Shift+P输入:pcip选择第一个 2.输入:View In Browser安装此插件 3.菜单栏Preferences->Key Bindings  输入:[{ &q ...

  2. vue--实例化对象

    根目录下的文件,这些是创建vue项目时生成的配置文件 node_modules=> 里面的文件是项目开发过种中的各种依赖,我们暂且不用去深入了解: public=> 主要放的是一些公用的文 ...

  3. 关于window.onresize

    window.ss1 = function() { alert("aaa") } window.ss = function() { alert("bbb") } ...

  4. Unity---判断某个点是否在摄像机的视景范围内

    using UnityEngine; [RequireComponent(typeof(Camera))] public class VisualDetectionCamera : MonoBehav ...

  5. android -------- 获取手机设备信息

    最近在开发中,需要用到一些系统信息,总结了一下 /** * Created by zhangqie on 2019/2/26 * Describe: 系统工具类 */ public class Equ ...

  6. javascript高级程序设计第3版——第一章概括

    最近发现Xmind思维导图是个好东西,刚好开始看书,被用来归纳最好不过了

  7. vue教程自学笔记(二)

    三.模板语法 1.文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值. 通过v-once指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新. 2.原始H ...

  8. 点击事件target

    1.场景:需要写一个弹出框来容纳登录界面,类似于百度的登录框   问题:使用  display: none/block  进行弹出框的显示和隐藏,设立点击事件   onclick  进行触发,但是点击 ...

  9. K2在Gartner 2017 iBPMS魔力象限报告中上升为“挑战者”

    在Gartner近期发布的iBPMS MQ报告中,Gartner分析了入选的19家厂商,将K2列为智能业务流程管理系统(iBPMS)MQ(魔力象限)的“挑战者”.从下列图中可以看出,相比上期,K2从魔 ...

  10. JsonLayout log4j2 json格式输出日志

    如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. 前提需要Jackson的包,保证项目中包含jackson的 ...