当前位置: 首页 > news >正文

【C语言 模拟实现strcmp函数】

C语言程序设计笔记---025

  • C语言之模拟实现strcmp函数
    • 1、介绍strcmp函数
    • 2、模拟实现strcmp函数
    • 3、结语

C语言之模拟实现strcmp函数

前言:
通过C语言字符串函数的知识,这篇将对strcmp函数进行深入学习底层原理的知识,并模拟实现对应功能。

/知识点汇总/

1、介绍strcmp函数

函数原型:int strcmp( const char *string1, const char *string2 );
函数功能:字符串比较大小(不是比较长度,而是比较对应位置上的字符大小,即ASCII码值),返回值类型为int
头文件:<string.h>
返回值标准规定:ASCLL码值
①.第一个字符串大于第二个字符串,则返回大于0的数字
②.第一个字符串等于第二个字符串,则返回0
③.第一个字符串小于第二个字符串,则返回小于0的数字

使用注意事项
不是比较长度,而是比较对应位置上的字符大小,即ASCII码值
示例代码1如下

#include <stdio.h>
#include <string.h>
int main()
{char arr1[] = "abcdef";char arr2[] = "abq";int ret = strcmp(arr1, arr2);printf("%d\n", ret);//-1,第一个字符串比第二个字符串小,返回小于零的数值return 0;
}

2、模拟实现strcmp函数

#include <stdio.h>
#include <string.h>int my_strcmp(const char* str1,const char* str2)
{assert(str1 && str2);while (*str1 == *str2){if (*str1 == '\0')return 0;str1++;str2++;}return *str1 - *str2;
}int main()
{char arr1[] = "abc";char arr2[] = "abq";if (my_strcmp(arr1, arr2) > 0){printf(">\n");}else{printf("<=\n");}return 0;
}

解释说明
1.assert是断言,参数为指针,防止传参过来是空指针避免野指针的问题
2.当*str1 == *str2则指针继续移动,直到出现不同的字符后,用指针解引用后的值相减,也就是字符的ASCII码值相减,得到的值正好也满足返回值类型int

3、结语

学习函数的最实用的方式就是用自己的逻辑简单实现一些类似的功能
半亩方糖一鉴开,天光云影共徘徊。
问渠哪得清如许?为有源头活水来。–朱熹(观书有感)

http://www.lryc.cn/news/181812.html

相关文章:

  • maven 依赖版本冲突异常
  • 蓝牙核心规范(V5.4)11.5-LE Audio 笔记之Context Type
  • 【Linux】RPM包使用详解
  • 勒索病毒最新变种.Elbie勒索病毒来袭,如何恢复受感染的数据?
  • ArduPilot开源飞控之AP_Mission
  • JVM111
  • 排序篇(三)----交换排序
  • React antd Table点击下一页后selectedRows丢失之前页选择内容的问题
  • 蓝牙核心规范(V5.4)11.4-LE Audio 笔记之音频模型
  • Spring Boot:利用JPA进行数据库的查删
  • 1711: 【穷举】满足条件的整数
  • 【数据结构】堆的应用-----TopK问题
  • QT之xml文件的读写
  • C语言中的异常处理机制是什么?
  • Java中的并发编程模型和常用工具类
  • 第10章 MySQL(一)
  • 英飞凌 Tricore 架构中断系统详解
  • 单例模式:饿汉式
  • 什么是视图
  • C++——list(2)
  • Django基础讲解-路由控制器和视图(Django-02)
  • 【算法题】2873. 有序三元组中的最大值 I
  • HTML5 跨屏前端框架 Amaze UI
  • EXCEL会计记账报表财务软件企业公司做账系统凭证自动生成报表
  • Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test
  • 第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和
  • 腾讯云服务器南京地域详细介绍、测试IP和Ping值测速
  • 理解CSS的层叠性和继承性
  • OSI体系结构和TCP/IP体系结构
  • 侯捷 C++ STL标准库和泛型编程 —— 8 适配器