m_strcmp
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的更多相关文章
- ICON文件保存
这两天想做一下windows系统下图标的修改,让程序有更新的时候能够更新图标的外观,达到提醒的作用,360,QQ经常采用这种方式进行更新的提示,也有采用弹框的方式来提示,用新版QVOD的同事可能见到过 ...
- C语言实现strcat / strlen / strcmp / strcpy
主要考虑两点: 返回值对使用的便利性. 边界,null的判断. strcat char *m_strcat(char *des, const char *src) { assert((des != N ...
随机推荐
- SpringBoot RequestBody ajax提交对象
前端实现: var student = { "name":1, "age":2, "score":3 }; $.ajax({ url:&qu ...
- Node.js安装windows环境
一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下载对应你系统的Node.js版本:https:// ...
- Redis项目实战 .net StackExchange.Redis
StackExchange.Redis 免费.支持异步.用的最多 常用对象 源码地址:https://github.com/StackExchange/StackExchange.Redis 用 ...
- QT 读写.ini配置文件
当需要存放的数据量较少时合适使用.ini配置文件. #include <QCoreApplication> #include <QSettings> void SystemSe ...
- python 的django项目复制方法
python 的django项目复制方法 django_pyecharts_1修改为django_pyecharts_1_cs1.拷贝项目(确保原有项目是关闭状态下)2.粘贴项目并删除idea文件夹和 ...
- 虚拟机VMware中安装Ubuntu18.04
准备工作 Ubuntu 获取地址: 官网 清华镜像站 VMware 获取地址链接 安装过程 Vmware的安装过程此处不在赘述,不清楚如何安装的请自行百度,参见VMware14安装教程 然后就是Vmw ...
- net namespace实验
Net namespace实验 在 Linux 中,网络名字空间可以被认为是隔离的拥有单独网络栈(网卡.路由转发表.iptables)的环境.网络名字空间经常用来隔离网络设备和服务,只有拥有同样网络名 ...
- 第1章 云端开发平台Salesforce CRM
1.1云计算平台 传统软件的开发往往耗资成千上万(甚至几百万)美元,有时需要几年的专业服务帮助建立和定制应用程序,而软件的业务问题往往由于其十分复杂或成本太高而无法触及.随着Internet的革新,改 ...
- 十分钟快速创建 Spring Cloud 项目
一般来说,Intelij IDEA 可以通过 Maven Archetype 来快速生成Maven项目,其实 IDEA 集成了 Spring 官方提供的 Spring Initializr,可以非常方 ...
- 起始路由改成分区(Areas)的RouteConfig.cs配置方法
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/ ...