【c语言】字符串比较 | API仿真

news/2024/11/1 22:40:12/

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ


c语言系列专栏:c语言之路重点知识整合

字符串知识点:字符串基本概念、存储原理


字符串比较 目录

  • 一、字符串比较
  • 二、strncmp仿真
    • 声明:
    • 指针方式定义:
    • 调用测试:
    • 运行结果:

一、字符串比较

字符串比较是对两个或多个字符串进行逐个字符的比较判断是否相等

strcmp() 函数根据两个字符串的第一个不同字符的 ASCII 码对比大小

返回 1 代表 大于关系 ; 返回 0代表等于关系;返回-1代表小于关系

标准库函数strncmp:

image-20230506151200574

使用:

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{/*字符串比较函数*/ /*strcmp*/printf("%d\n", strcmp("ABCDE", "a"));//str2的ASCII码大于str1就输出-1printf("%d\n",strcmp("ABCDE","ABCDE"));//str2的ASCII码等于str1就输出0printf("%d\n", strcmp("ABCDe","ABCDE"));//str2的ASCII码小于str1就输出1return 0;
}

image-20230506151341144


二、strncmp仿真

字符串常用于文字处理,常用且实用。因此其常用功能被封装成了一套API。可通过string.h进行使用。

通过仿真我们可以理解其函数内部工作机制的细节

定义一个my_strncmp函数,模仿strncmp函数比较字符串

不使用标准函数strncmp比较,使用自己定义的my_strncmp函数

声明:

int my_strcmp(const char* str1, const char* str2);

指针方式定义:

 int my_strcmp(const char* str1, const char* str2){const char* p1 = str1;const char* p2 = str2;while (*p1 == *p2 && *p1){p1++;p2++;}//return *p1 - *p2; return *p1 - *p2 ? (*p1 - *p2) / abs(*p1 - *p2) : 0;}

调用测试:

#include <stdio.h>
#include <string.h>
#include <math.h>
int my_strcmp(const char* str1, const char* str2);
int main()
{/*字符串比较函数*/ /*strcmp*///printf("%d\n", strcmp("ABCDE", "a"));//-1//printf("%d\n",strcmp("ABCDE","ABCDE"));//0//printf("%d\n", strcmp("ABCDe","ABCDE"));//1/*仿真字符串比较函数 strcmp */printf("%d\n", my_strcmp("ABCDE", "a"));//-1printf("%d\n", my_strcmp("ABCDE", "ABCDE"));//0printf("%d\n", my_strcmp("ABCDe", "ABCDE"));//1return 0;
}
/*仿真字符串比较函数 strcmp */int my_strcmp(const char* str1, const char* str2){const char* p1 = str1;const char* p2 = str2;while (*p1 == *p2 && *p1){p1++;p2++;}//return *p1 - *p2; return *p1 - *p2 ? (*p1 - *p2) / abs(*p1 - *p2) : 0;}

运行结果:

与原先的strncmp函数比较效果相同:

image-20230506151702008

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!

http://www.ppmy.cn/news/60503.html

相关文章

用layui写用户登录页面遇到的问题

用layui写用户登录页面遇到的问题 1.在layui-row下面的layui-col-md还是换行 原因&#xff1a;link标签和script标签中的type属性没写&#xff0c;导致应该是script或者这个css没有识别出来 解决办法&#xff1a;link标签里面加上type为text/css, script标签中加上type为 2…

C++入门3(C++新特性 using string auto)

C入门3 C新特性auto推导规则auto 作为函数的形参类型decltype基于范围for循环 typedef与usingC语言定义变量typedef 在C语言中的写法using在C11中的写法using与template的结合 string的简单使用 C新特性 auto推导规则 auto类型推导: auto定义的变量&#xff0c;可以根据初始化…

拿来吧你——一个类帮你搞定SpringBoot中的请求日志打印

拿来吧你——一个类帮你搞定SpringBoot中的请求日志打印 日常开发工作中避免不了要打印请求日志&#xff0c;这个功能几乎在所有的项目中都需要编写一次&#xff0c;重复的次数多了&#xff0c;难免会感觉繁琐&#xff0c;因此打算搞一个通用类把这块功能拆出来。 废话不多说—…

计算机网络笔记:HTTP协议关于缓存

强缓存 强缓存分为两种情况&#xff0c;一种是发送HTTP请求&#xff0c;一种不需要发送。 首先检查强缓存&#xff0c;这个阶段不需要发送HTTP请求。通过查找不同的字段来进行&#xff0c;不同的HTTP版本所以不同。 HTTP1.0版本&#xff0c;使用的是Expires&#xff0c;HTTP1…

51单片机的中断系统

文章目录 51单片机的中断系统一、中断系统简介程序中断中断可以实现的主要功能中断执行过程 二、51单片中断系统使用中断源中断控制中断允许中断判优中断函数定义 三、中断系统使用案例例一:P3.2 引脚上接了一个按键&#xff0c;P0口连接了8个发光二极管&#xff0c; 要求每次按…

vue修饰符的使用

事件修饰符&#xff1a; 在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的。尽管我们可以直接在方法内调用&#xff0c;但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好。 为解决这一问题&#xff0c;Vue 为 v-on 提供了事件…

uni-app获取手机号-获取用户地理位置-根据位置获取经纬度跳转高德

一.获取手机号 1.获取手机号首先要先登录拿到code&#xff0c;用code去获取session_key 2.获取 code需要知道自己的AppID(小程序ID)和AppSecret(小程序密钥) 3.解密后得到手机号 登录微信公众平台拿到自己的AppID(小程序ID)和AppSecret(小程序密钥) 微信公众平台 获取sessio…

各SQL引擎的SQL转换过程对比

SQL引擎 参考文档:高级语言的解析过程—解析树 从 MySQL、Oracle、TiDB、CK,到 Hive、HBase、Spark,从关系型数据库到大数据计算引擎,他们大都可以借助 SQL 引擎,实现 “接受一条 sql 语句然后返回查询结果” 的功能。 他们核心的执行逻辑都是一样的,大致可以通过下面…