自己写strcmp( )函数
网上搜到了一个库函数strcmp( )源代码:
int strcmp (const char * src, const char * dst)
{int ret = 0 ;while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)++src, ++dst; if ( ret < 0 )ret = -1 ;else if ( ret > 0 )ret = 1 ;return( ret );
}
我初步自己写的是:
int strcmp(char const *s1, char const *s2)
{int i = 0;while(1) {if(s1[i] == '\0' && s2[i] == '\0')return 0;else if(s1[i] > s2[i])return 1;else if(s1[i] < s2[i])return -1;i++;}
}
然后再精简一下是:
int strcmp(char const *s1, char const *s2)
{int ret, i = 0;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i] || !s2[i])return ret;i++;}
}
继续精简:
int strcmp(char const *s1, char const *s2)
{int ret, i = 0;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i])//只要字符串中有一个遇到\0,ret就不为零了 return ret;i++;}
}
但如果传入指针为NULL,则会崩溃,改进如下:
int strcmp(char const *s1, char const *s2)
{int ret, i = 0;if( !s1 || !s2)return s1 - s2;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i])//只要字符串中有一个遇到\0,ret就不为零了 return ret;i++;}
}
欢迎大家评头论足
自己写strcmp( )函数相关推荐
- 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s
题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s ...
- 自己写一个strcmp函数(C++)
题目说明: 写一个函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp( char * p1, char * p2); 设p1指向字符串s1,p2指向字符串s2.要 ...
- 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2
写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2.要求当s1=s2 ...
- 用指针写出strcmp函数
题目:用指针写出strcmp函数. 思考:此题目和用指针写出strcpy函数一样.使用递归的思想,函数功能就是当s1和s2相等时,函数返回值为0,如果s1>s2时,函数返回值为正整数,s1< ...
- (C语言)写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2)
写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2);设p1指向字符串s1,p2指向字符串s ...
- C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
题目: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串. #include <string.h> #include <stdio.h> void left_re ...
- strcmp函数实现及分析
增加linux内核部分代码参考,见文章尾部: 最近看C,看到strcmp函数,对它的实现原型不很清楚,于是到网上搜.网上算法一大堆,看了很多代码后自己做了一下总结 strcmp函数是C/C++中基本的 ...
- strcmp函数的说明和使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.strcmp函数的头文件 二.strcmp函数的使用方法 1.strcmp函数的使用对象 2.strcmp函数的使 ...
- C语言使用strcmp()函数对两个汉字字符进行比较
C语言使用strcmp()函数对两个汉字字符进行比较 最近写了个代码,发现关于使用strcmp()函数比较两个汉字字符串出现错误,现做以下改正: 源代码: #include<stdio.h> ...
最新文章
- 什么是CNN卷积神经网络的感受野及动画演示
- mongodb默认的用户名密码_MongoDB 设置账号和密码
- How to write an operating system
- 为什么视频压缩如此重要
- SAP系统里的订单,可以随便删除么?
- LeetCode 1250. 检查「好数组」(set / 最大公约数)
- sql语句变量定义和样例
- cleanmymac X 4.7.3更新(支持M1芯片)
- python协程与多线程比较_python-协程、多线程、多进程性能比较
- javascript 阻止冒泡和浏览器的默认行为
- Python字符串有关的方法汇总
- 系统策略禁止安装此设备。请与系统管理员联系-解决方案
- iOS开发之观察者模式
- 极客日报:阿里回应1000万成立“元境生生”;马斯克一年上了75次热搜;微软.NET中文官网正式上线
- elasticsearch数据迁移
- 数学建模:整数规划示例模型 (Python 求解)
- Cannot access memory at adress 0xbf9
- php 导出excel删除空行,将Excel数据写入Word模板并删除多余的空行
- npm 创建第一个Angular项目
- 是计算机程序设计语言的是,计算机设计语言
热门文章
- Linux 数据可视化工具
- python3.8安装mayavi4.7.3
- potplayer播放器实现人声增强
- 计算机网络-CSMA/CD协议
- Echarts画散点图
- PS188——谱瑞(Parade)推动的 Type-C扩展坞红海战略
- read_csv()报错: 'utf-8' codec can't decode byte 0xca in position 0: invalid continuation byte最新解决办法
- vue打印问题(分页打印、批量打印条形码)
- 基于“业务中台”构建的一些理解
- PHP解码JavaScript中的escape()方法