strcmp函数的两种实现
strcmp函数的两种实现,gcc测试通过。
一种实现:
- #include<stdio.h>
- int strcmp(const char *str1,const char *str2)
- {
- /* 注释以下的五行(while循环)可以简写为:
- * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
- * */
- while((*str1==*str2)&&*str1!='\0')
- {
- str1++;
- str2++;
- }
- if(*str1=='\0'&&*str2=='\0') return 1;
- else return -1;
- }
- int main()
- {
- char *st1="abdefg";
- char *st2="abcdefg";
- printf("%d\n",strcmp(st1,st2));
- char *st3="12345";
- char *st4="12345";
- printf("%d\n",strcmp(st3,st4));
- return 0;
- }
另一种实现:
- #include<stdio.h>
- int strcmp(const char *str1,const char *str2)
- {
- while(str1!=NULL&&str2!=NULL)
- {
- while(*str1++==*str2++)
- {
- if(*str1=='\0'&&*str2=='\0') return 1;
- }
- return -1; //不等的情况
- }
- return -2; //有指针为空的情况
- }
- int main()
- {
- char *st1="abdefg";
- char *st2="abcdefg";
- printf("%d\n",strcmp(st1,st2));
- char *st3="12345";
- char *st4="12345";
- printf("%d\n",strcmp(st3,st4));
- char *st5="xyz",*st6=NULL;
- printf("%d\n",strcmp(st5,st6));
- return 0;
- }
strcmp函数的两种实现的更多相关文章
- (查找函数+atoi)判断与(注册函数+strcmp函数)判断两种方法
loadrunner中接口判断的2中方法 如下: 1. ●查找函数web_reg_find() ● atoi():将字符串转换为整型值 作比较 > 0 Action() { //检查点函 ...
- JavaScript 函数的两种声明方式
1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...
- C模块回调Lua函数的两种方法
作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di C模块回调Lua函数的两种方法 lua和C通过虚拟栈这种交互方式简单而又可靠,缺点就是C做栈平 ...
- (转)DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...
- 【转】DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...
- dll导出函数的两种方式的比较
最初的网页链接已经挂了, 在此贴一个中间的转载链接 https://blog.csdn.net/zhazhiqiang/article/details/51577523 一 概要 vs中导出 dll的 ...
- DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接 ...
- DLL声明导出函数的两种方式
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport):另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属 ...
- getline()函数的两种用法
getline()函数的输入流对象可以是标准输入流对象cin,也可以是一个文件输入流对象fin; (1)输入流对象的成员函数(有三个参数,一般除非需要自己选定停止符,并不推荐使用): basic_is ...
随机推荐
- Js 改变时间格式输出格式
朋友看到的方法,非js原生的 自己封装到 function date2str(x,y) { var z={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate( ...
- 读了这一篇,让你少踩 ArrayList 的那些坑
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- JavaScript 引用数据类型
目录 1. 问题描述 2. 原因分析 3. React 中的引用数据类型 4. 业务场景 5. 参考资料 1. 问题描述 今天在写一个代码题时候, 有一个BUG 导致自己停滞好久, 该BUG 可以描述 ...
- Username for 'https://github.com': remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/GLSmile/pythontest.git/' 问题
使用$ git push -u origin master 进行同步时,提示输入用户名和密码,但是我输入正确的信息后,仍然 会报Username for 'https://github.com': r ...
- css背景图定位和浮动
网站图标引入:<link rel="shortcut icon" href="ico图标地址"> 背景图片 background-image: u ...
- Java实现 蓝桥杯VIP 算法训练 -2进制(暴力)
试题 算法训练 -2进制 问题描述 给出1个十进制整数N,计算出它的-2进制表示. 输入格式 第一行:一个整数N,表示要转换的十进制数. 输出格式 第一行:N的-2进制表示. 样例输入 -13 样例输 ...
- Java实现 LeetCode 912 排序数组(用数组去代替排序O(N))
912. 排序数组 给你一个整数数组 nums,将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0, ...
- Java实现第九届蓝桥杯乘积为零
乘积为零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 61 ...
- java实现第六届蓝桥杯格子中输出
格子中输出 格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串. 要求字符串在水平.垂直两个方向上都居中. 如果字符串太长,就截断. 如果不能恰好居中,可以稍稍偏左或者偏 ...
- React 为什么要把事件挂载到 document 上 & 事件机制源码分析
前言 我们都知道 React 组件绑定事件的本质是代理到 document 上,然而面试被问到,为什么要这么设计,有什么好处吗? 我知道肯定不会是因为虚拟 DOM 的原因,因为 Vue 的事件就能挂载 ...