<系统函数实现>memcmp
这是我实现的memcmp函数:
#include <stdio.h>
#include <string.h>
/*
*int memcmp (const void *s1,const void *s2,size_t n);
*º¯Êý˵Ã÷
*memcmp()ÓÃÀ´±È½Ïs1ºÍs2ËùÖ¸µÄÄÚ´æÇø¼äǰn¸ö×Ö·û¡£×Ö·û´®´óСµÄ±È½ÏÊÇÒÔASCIIÂë±íÉϵÄ˳ÐòÀ´¾ö¶¨£¬´Î˳ÐòÒàΪ×Ö·ûµÄÖµ¡£memcmp()Ê×ÏȽ«s1µÚÒ»¸ö×Ö·ûÖµ¼õÈ¥s2µÚÒ»¸ö×Ö·ûµÄÖµ£¬
*Èô²îΪ0ÔòÔÙ¼ÌÐø±È½Ïϸö×Ö·û£¬Èô²îÖµ²»Îª0Ôò½«²îÖµ·µ»Ø¡£ÀýÈ磬×Ö·û´®"Ac"ºÍ"ba"±È½ÏÔò»á·µ»Ø×Ö·û'A'(65)ºÍ'b'(98)µÄ²îÖµ(£33)¡£
*·µ»ØÖµ
Èô²ÎÊýs1ºÍs2ËùÖ¸µÄÄÚ´æÄÚÈݶ¼ÍêÈ«ÏàͬÔò·µ»Ø0Öµ¡£s1Èô´óÓÚs2Ôò·µ»Ø´óÓÚ0µÄÖµ¡£s1ÈôСÓÚs2Ôò·µ»ØÐ¡ÓÚ0µÄÖµ¡£
*p is src, q is des, len is length of p
*error =-1
*p>q >0
*p<q <0
*p==q =0
*/
int _memcmp(const void *p,const void *q,int len)
{
if(!p || !q)
{
return -;
} // while((*(char *)p != '\0') && (*(char *)q != '\0') && (len > ))
while(len > 0)//this is strcmp , memcmp should't test \0
{
//printf("p %p:%d q %p:%d len %d\n",p,*(char *)p,q,*(char *)q,len);
if((*(char *)p - *(char *)q) != )
{ return (*(char *)p-*(char *)q);
}
p++;
q++;
len--;
} if((len > ) && (*(char *)p != '\0'))
{
return ;
} if((len > ) && (*(char *)q != '\0'))
{
return -;
} return ;
} int main(int argc, char **argv)
{
char *p = "abcfgf"; char *q = "abcfg"; int val; val = memcmp(p,q,);
printf("sys val is %d\n",val); val = _memcmp(p,q,); printf("my val is %d \n",val); return ;
}
<系统函数实现>memcmp的更多相关文章
- Sql Server函数全解(五)之系统函数
系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些信息.下面介绍系统函数的作用和使用方法. 1.返回表中指定字段的 ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- Delphi常用系统函数总结
Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...
- 15系统函数&数据类型转换(必学)-大话数据库视频教程
大纲:系统函数的用法,case...when的用法,cast关键字的用法,convert的用法 优酷超清地址: 腾讯超清地址: 百度网盘下载地址:http://pan.baidu.com/s/1dDe ...
- 【Linux程序设计】之环境系统函数综合实验
这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux环境下系统函数综合实验 实验目的:熟悉并掌握Linux环境下数学函 ...
- 描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串
下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构 ...
- Linux网络编程2——系统函数
socket信息数据结构 #include <netinet/in.h> struct sockaddr { unsigned short sa_family; /*地址族*/ ]; /* ...
- Oracle的学习三:java连接Oracle、事务、内置函数、日期函数、转换函数、系统函数
1.java程序操作Oracle java连接Oracle JDBC_ODBC桥连接 1.加载驱动: Class.forName("sun.jdbc.odbc.JdbcodbcDriver& ...
- Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏
阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义.windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具.其实万能的vim就可以实现.下面介绍一下vi ...
随机推荐
- 使用multimap创建重复键关联容器
在“使用 <map> 库创建关联容器”一文中,我们讨论了标准库中的 map 关联容器.但那只是 map 容器的一部分.标准库还定义了一个 multimap 容器,它与 map 类似,所不同 ...
- SOCKSify Ruby
http://socksify.rubyforge.org/ What is it? SOCKSify Ruby redirects any TCP connection initiated by a ...
- Android实现自定义字体
介绍 最近在看开源项目的时候,发现里面涉及到了自定义字体,虽然自己目前还用不到,但是动手demo笔记记录一下还是有必要的,没准哪天需要到这个功能. 原理 1.其实实现起来非常简单,主要是用到了Type ...
- laravel, Composer和autoloading
http://www.php-fig.org/psr/psr-4/ http://www.php-fig.org/psr/psr-0/ http://alanstorm.com/laravel_com ...
- Jqgrid入门-Jqgrid分组的实现(八)
上一章主要说明了如果实现Jqgrid列数据拖动,这一章主要讨论在Jqgrid中如何实现分组功能. 类似于Sql语句的Group By,Jqgrid提供了属性实现数据分组,这样表现数据会 ...
- POJ 1948 Triangular Pastures【二维01背包】
题意:给出n条边,用这n条边构成一个三角形,求三角形的最大面积. 先求面积,用海伦公式,s=sqrt(p*(p-a)*(p-b)*(p-c)),其中a,b,c分别为三角形的三条边,p为三角形的半周长, ...
- OCJP考试介绍
OCJP考试介绍 考试名称:SCJP / OCJP / 1Z0-851 考试时间:150分钟 考题题目:60道题 通过条件:大于等于61%的题目正确 考点查询:http://www.pearsonvu ...
- BZOJ 4408 神秘数
题解同各神犇的方法... #include<iostream> #include<cstdio> #include<cstring> #include<alg ...
- Linux C double linked for any data type
/************************************************************************** * Linux C double linked ...
- 开发环境配置(netbeans+ant迁移到eclipse+maven)
新公司入职,接手一个离职人员的项目,拿到的源码是以一个压缩包,用netbeans开发,ant管理:前端:jsp+extjs,后端:springmvc+hibernate+activiti+spring ...