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 ...
随机推荐
- 8th,常用模块、正则表达式
re模块 什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.内嵌在Python中,通过re模块实现.正则表达式模 ...
- 使用RStudio调试(debug)基础学习(一)
点击行号的左侧,即可设置断点(或者按下Shift+F9),如果没有出现,反而出现下图的警告: 那么只是因为我的坏习惯--写一段脚本测试的时候都是新建,但不save到本地,不喜欢保存,写的差不多了才开始 ...
- 从github上下载java项目导入到eclipse中
转载地址:https://blog.csdn.net/chyo098/article/details/79268136
- Go 安装 sqlite3驱动报错
问题:最近在使用Go做一个博客示例,在使用go get 安装 sqlIite3的驱动遇到下面的问题(cc1.exe: sorry, unimplemented: 64-bit mode not com ...
- HBase Region 各个状态的转换
Region 各个状态的转换 HBase 维护了每个 region 的一个状态信息,并保存在 hbase:meta 中.hbase:meta 本身region的状态信息被持久化到 ZooKeeper. ...
- WebSocket ,Socket ,Http差异
最近一直被Socket 被Http搞懵了,然后归类整理了下 首先需要知道网络七层,从上至下 应用,表示,回话,传输,网络,数据链路,物理,一共7层 WebSocket: 这个是在Html5提出的一种规 ...
- 弹性盒式布局flexbox(dispaly:flex)
display:flex flex-direction: row(行)/column(列)/row-reverse/column-reverse反方向 //布局 justify-content: s ...
- kibana升级之后原本保存的数据dashboards, visualizations, index patterns丢失
1,es升级注意的问题:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/rolling-upgrades.html 2,kiba ...
- 6月23 Ajax传地址
利用Ajax将图片存入数据库的过程中可能会出现路径乱码或不一致的现象因此要对其进行编码解码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- 6月19 使用tp框架生成验证码及文件上传
ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php 默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think ...