string函数的一些实现
/*************************************************************************
> 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函数的一些实现的更多相关文章
- Python 常用string函数
Python 常用string函数 字符串中字符大小写的变换 1. str.lower() //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...
- string函数分析
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...
- PHP String 函数
[http://www.w3school.com.cn/php/php_ref_string.asp ] PHP String 简介 String 字符串函数允许您对字符串进行操作. 安装 Strin ...
- lua string函数
lua的string函数: 参数中的index从1开始,负数的意义是从后开始往前数,比如-1代表最后一个字母 对于string类型的值,可以使用OO的方式处理,如string.byte(s.i)可以被 ...
- PHP 5 String 函数
PHP 5 String 函数 PHP String 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. 函数 描述 addcslashes() 返回在指定的字符前添加反斜杠的字符串. add ...
- c++string函数详解
string,一个极为好用了函数,学好了这些函数,在模拟以及字符串问题上,回节省很多很多的写代码时间,代码复杂度以及错误率,那么这一类函数都有那些功能呢?我们来逐一介绍(让你大吃一惊,还有这种操作?) ...
- 常用string函数分析
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...
- c++:string函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持 ...
- C string 函数大全
PS:本文包含了大部分strings函数的说明,并附带举例说明.本来想自己整理一下的,发现已经有前辈整理过了,就转了过来.修改了原文一些源码的问题,主要是用char *字义字符串的问题,导致程序运行时 ...
- C++string函数之strcat_s
跟上一篇的strcpy_s一样,是新推出的较为安全的strcat函数 strcat_s脱胎于strcat,用于两个字符串的链接,strcat(str1,str2)直接返回新的str1. 但在vs200 ...
随机推荐
- sublime设置html在浏览器打开
1.快捷键 Ctrl+Shift+P输入:pcip选择第一个 2.输入:View In Browser安装此插件 3.菜单栏Preferences->Key Bindings 输入:[{ &q ...
- vue--实例化对象
根目录下的文件,这些是创建vue项目时生成的配置文件 node_modules=> 里面的文件是项目开发过种中的各种依赖,我们暂且不用去深入了解: public=> 主要放的是一些公用的文 ...
- 关于window.onresize
window.ss1 = function() { alert("aaa") } window.ss = function() { alert("bbb") } ...
- Unity---判断某个点是否在摄像机的视景范围内
using UnityEngine; [RequireComponent(typeof(Camera))] public class VisualDetectionCamera : MonoBehav ...
- android -------- 获取手机设备信息
最近在开发中,需要用到一些系统信息,总结了一下 /** * Created by zhangqie on 2019/2/26 * Describe: 系统工具类 */ public class Equ ...
- javascript高级程序设计第3版——第一章概括
最近发现Xmind思维导图是个好东西,刚好开始看书,被用来归纳最好不过了
- vue教程自学笔记(二)
三.模板语法 1.文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值. 通过v-once指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新. 2.原始H ...
- 点击事件target
1.场景:需要写一个弹出框来容纳登录界面,类似于百度的登录框 问题:使用 display: none/block 进行弹出框的显示和隐藏,设立点击事件 onclick 进行触发,但是点击 ...
- K2在Gartner 2017 iBPMS魔力象限报告中上升为“挑战者”
在Gartner近期发布的iBPMS MQ报告中,Gartner分析了入选的19家厂商,将K2列为智能业务流程管理系统(iBPMS)MQ(魔力象限)的“挑战者”.从下列图中可以看出,相比上期,K2从魔 ...
- JsonLayout log4j2 json格式输出日志
如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. 前提需要Jackson的包,保证项目中包含jackson的 ...