strcmp比较两个字符串的大小,strcmp(str1, str2);

从str1和str2的第一个元素比较直到出现不同,或者遇到'\0'结束。如果str1 > str2 返回正数,str1 < str2返回负数,相等返回零。

eg:

str1 str2
abcde > abcd
abcde > abcddd
abcde < abcdef

自己实现这个函数:

#include <stdio.h>
#include <string.h> int m_strcmp(char *str1, char *str2)
{
int i = 0; while(str1[i] != '\0')
{
printf("str1 str2%s %s\n", str1, str2);
if(str2[i] != '\0')
{
if(str1[i] < str2[i])
{
return -1;
}else if(str1[i] > str2[i])
{
return 1;
}else if(str1[i] = str2[i])
{
i++;
continue;
}else
{
printf("this is a problem!\n");
}
}else if(str2[i] == '\0')
{
return 1;//str1>str2
}else
{
printf("this is a problem2!\n");
}
}
if(str2[i] == '\0')
{
return 0;
}else
{
return -1;//str1<str2
}
} int main ()
{
char str1[15];
char str2[15];
int ret; scanf("%s", str1);
scanf("%s", str2);
printf("%s %s\n", str1, str2); ret = m_strcmp(str1, str2); if(ret < 0)
{
printf("str1 小于 str2\n");
}
else if(ret > 0)
{
printf("str2 小于 str1\n");
}
else
{
printf("str1 等于 str2\n");
}
printf("%d\n", ret);
return(0);
}

大佬的优质代码:

int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ; while((ret = *(unsigned char *)src - *(unsigned char *)dst) == 0 && *dst)
++src, ++dst; if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ; return( ret );
}

m_strcmp的更多相关文章

  1. ICON文件保存

    这两天想做一下windows系统下图标的修改,让程序有更新的时候能够更新图标的外观,达到提醒的作用,360,QQ经常采用这种方式进行更新的提示,也有采用弹框的方式来提示,用新版QVOD的同事可能见到过 ...

  2. C语言实现strcat / strlen / strcmp / strcpy

    主要考虑两点: 返回值对使用的便利性. 边界,null的判断. strcat char *m_strcat(char *des, const char *src) { assert((des != N ...

随机推荐

  1. Andrew Ng机器学习课程9-补充

    Andrew Ng机器学习课程9-补充 首先要说的还是这个bias-variance trade off,一个hypothesis的generalization error是指的它在样本上的期望误差, ...

  2. 高级UI-属性动画

    在3.0以前,动画效果主要为补间动画(TweenAnimation)和帧动画(FrameAnimation),从3.0开始加入了属性动画,其本质就是不断地改变控件的属性,从而达到复杂的动画效果,其效果 ...

  3. 最新 苏州朗动java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.苏州朗动等10家互联网公司的校招Offer,因为某些自身原因最终选择了苏州朗动.6.7月主要是做系统复习.项目复盘.Leet ...

  4. mysql函数concat与group_concat使用说明

    mysql函数concat与group_concat使用说明concat()函数<pre>mysql> select concat(',',name,',') from `user` ...

  5. 『Python基础练习题』day04

    # 1.写代码,有如下列表,按照要求实现每一个功能 # li = ['Conan', 'Kidd', 'blame', 'jimmy', 'RachelMoore'] # 计算列表的长度并输出 # 列 ...

  6. 【LEETCODE】34、119题,Pascal's Triangle II

    package y2019.Algorithm.array; import java.util.ArrayList; import java.util.List; /** * @ProjectName ...

  7. 手把手教小白安装Erlang

    Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它有瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境. Erlang官网:htt ...

  8. ABP 基于DDD的.NET开发框架 学习(二)创建实体

    1.创建模型类打开.Core项目,新建新建一个项目文件夹(Demo);为了演示表关联及外键的使用,创建两个类:创建类ClothesCategoty.csusing Abp.Domain.Entitie ...

  9. Go 编译 && 工具

    编译和工具链 Go 的工具链非常丰富,从获取源码.编译.文档.测试.性能分析,到源码格式化.源码提示.重构工具等应有尽有 在 Go 中可以使用测试框架编写单元测试,使用统一的命令行即可测试及输出测试报 ...

  10. springboot下@webfilter的使用

    启动类加了@ServletComponentScan,无论过滤器类加不加@Componment urlPatterns = {"/test/*"}都可以生效 单使用@Compone ...