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. 继400G后,QSFP-DD800G会是下一个风口吗?

    数据中心市场作为光通信企业的主要战场,近三年400G的热度一直都在持续,虽有Facebook F16继续选用100G架构给市场泼了一些冷水等插曲存在,但近日随着阿里巴巴硅光400G QSFP-DD D ...

  2. pt-kill MySQL会话杀灭神器

    废话不多说,直接上例子: pt-kill --host=127.0.0.1 --user=xxx --password=xxxxxx --port=xxxx --busy-time 10 --matc ...

  3. 【计算机视觉】基于局部二值相似性模式(LBSP)的运动目标检测算法

    基于局部二值相似性模式(LBSP)的运动目标检测算法 kezunhai@gmail.com http://blog.csdn.net/kezunhai 本文根据论文:Improving backgro ...

  4. MApp_ZUI_CTL_MarqueeTextWinProc字串滚动

    /////////////////////////////////////////////////////////////////////////////// /// global MApp_ZUI_ ...

  5. Spring初解

    1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx  = new ClassPathXmlA ...

  6. 在linux上cuda9.0 cudnn7.* 安装python3.6 tensorflow 1.5.1

    链接:https://www.jianshu.com/p/bcf37d0e4e9b 为了入门机器学习的小伙伴能安装好工具,特制作此教程 按照 Anaconda 下载网站上的说明下载并安装 Anacon ...

  7. Http 请求到后端过程

    描述下网页一个 Http 请求,到后端的整个请求过程 评注:基础题,感觉属于常识题!必会! 回答: 利用DNS进行域名解析 -------> 发起TCP的3次握手 --------> 建立 ...

  8. scau 10692 XYM-入门之道

    题目:http://paste.ubuntu.com/14157516/ 思路:判断一个西瓜,看看能不能直接吃完,如果能,就吃了.但是:如果不能,就要分成两半,就这样分割,不用以为要用到n维数组,用一 ...

  9. 剑指offer59:按之字形顺序打印二叉树:[[1], [3,2], [4,5,6,7]]

    1 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 2 思路和方法 先给定一个二叉树的样式: ...

  10. python 之 前端开发(form标签、单选框、多选框、file上传文件、按钮、label标签、下拉列表、textarea标签、fieldset标签、table标签)

    11.25 form标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...