strcmp函数的两种实现,gcc测试通过。

一种实现:

C代码  
  1. #include<stdio.h>
  2. int strcmp(const char *str1,const char *str2)
  3. {
  4. /* 注释以下的五行(while循环)可以简写为:
  5. * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
  6. *  */
  7. while((*str1==*str2)&&*str1!='\0')
  8. {
  9. str1++;
  10. str2++;
  11. }
  12. if(*str1=='\0'&&*str2=='\0') return 1;
  13. else return -1;
  14. }
  15. int main()
  16. {
  17. char *st1="abdefg";
  18. char *st2="abcdefg";
  19. printf("%d\n",strcmp(st1,st2));
  20. char *st3="12345";
  21. char *st4="12345";
  22. printf("%d\n",strcmp(st3,st4));
  23. return 0;
  24. }

另一种实现:

C代码  
  1. #include<stdio.h>
  2. int strcmp(const char *str1,const char *str2)
  3. {
  4. while(str1!=NULL&&str2!=NULL)
  5. {
  6. while(*str1++==*str2++)
  7. {
  8. if(*str1=='\0'&&*str2=='\0') return 1;
  9. }
  10. return -1; //不等的情况
  11. }
  12. return -2; //有指针为空的情况
  13. }
  14. int main()
  15. {
  16. char *st1="abdefg";
  17. char *st2="abcdefg";
  18. printf("%d\n",strcmp(st1,st2));
  19. char *st3="12345";
  20. char *st4="12345";
  21. printf("%d\n",strcmp(st3,st4));
  22. char *st5="xyz",*st6=NULL;
  23. printf("%d\n",strcmp(st5,st6));
  24. return 0;
  25. }

strcmp函数的两种实现的更多相关文章

  1. (查找函数+atoi)判断与(注册函数+strcmp函数)判断两种方法

    loadrunner中接口判断的2中方法    如下: 1. ●查找函数web_reg_find() ● atoi():将字符串转换为整型值 作比较  > 0 Action() { //检查点函 ...

  2. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

  3. C模块回调Lua函数的两种方法

    作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di C模块回调Lua函数的两种方法 lua和C通过虚拟栈这种交互方式简单而又可靠,缺点就是C做栈平 ...

  4. (转)DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...

  5. 【转】DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...

  6. dll导出函数的两种方式的比较

    最初的网页链接已经挂了, 在此贴一个中间的转载链接 https://blog.csdn.net/zhazhiqiang/article/details/51577523 一 概要 vs中导出 dll的 ...

  7. DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接 ...

  8. DLL声明导出函数的两种方式

    DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport):另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属 ...

  9. getline()函数的两种用法

    getline()函数的输入流对象可以是标准输入流对象cin,也可以是一个文件输入流对象fin; (1)输入流对象的成员函数(有三个参数,一般除非需要自己选定停止符,并不推荐使用): basic_is ...

随机推荐

  1. VUE基础插值表达式

    vue 基本操作插值表达式 首先使用js导入vue.js文件 <style> [v-claok]{ display:none;//解决闪烁问题 } </style> <d ...

  2. php实用正则

    1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z ...

  3. 破解webstorm 亲测有效

    一.首先安装好webstorm,并且配置hosts文件 二.使用以下激活码进行激活,亲测有效可以用到2099年 4RULSIH54N-eyJsaWNlbnNlSWQiOiI0UlVMU0lINTROI ...

  4. 在树莓派里搭建 Lighttpd 服务器

    Lighttpd 像 Ngnix 一样,是被设计运行在低内存,低 CPU 负载的设备上,它们都非常适合在树莓派上运行. 本文将介绍如何在树莓派上运行基本配置的 Lighttpd ,以及如何与 PHP- ...

  5. windows环境下Kubernetes及Docker安装(那些坑)

    k8s 和 Docker容器技术,当前非常流行的技术. 让人日狗的是,   这套技术栈对CN的donet 程序员不怎么友好.娓娓道来,1. 好多镜像都是需要梯子才能访问: 2. window程序员天生 ...

  6. 【PyTorch】深度学习与PyTorch资料链接整理

    欢迎来到我的博客! 以下链接均是日常学习,偶然得之,并加以收集整理,感兴趣的朋友可以多多访问和学习.如果以下内容对你有所帮助,不妨转载和分享.(Update on 5,November,2019) 1 ...

  7. [wordpress使用]002_主题

    使用WordPress作为博客内容管理系统有一个很大的好处是,WordPress拥有大量的优秀的免费模板.你所需要的是下载安装,和稍作修改.下面接着开始WordPress教程:WordPress主题 ...

  8. [Objective-C] 011_数据持久化_NSKeyedArchiver

    在日常开发中对于NSString.NSDictionary.NSArray.NSData.NSNumber这些基本类的数据持久化,可以用属性列表的方法持久化到.plist 文件中.但是一些我们自定义的 ...

  9. pandas手册

    https://www.dataquest.io/blog/large_files/pandas-cheat-sheet.pdf

  10. Parrot os安装docker及docker-compose

    一.安装docker 1.添加Docker pgp key curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key ...