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

【C语言进阶:刨根究底字符串函数】 strcmp 函数

本节重点内容:

  • 深入理解strcmp函数的使用
  • 学会strcmp函数的模拟实现

下面演示一种错误的比较方式:

if ("abcdef" == "bcdefg") //这里比较的是两个字符串首字符的地址,而不是字符串的内容

这种比法语法上是没有任何问题的,但是这个代码比的不是两个字符串的内容。原因是这两个字符串在作为表达式的时候,它们两的值是第一个字符的地址,因此在用==号比的时候比的其实是这两个字符串的首个字符的地址是否相等,并没有比较两个字符串的内容。


⚡strcmp 

  • This function starts comparing the first character of each string. If they are equal to each
    other, it continues with the following pairs until the characters differ or until a terminating
    null-character is reached.
  • 第一个字符串大于第二个字符串,则返回大于0的数字。
  • 第一个字符串等于第二个字符串,则返回0。
  • 第一个字符串小于第二个字符串,则返回小于0的数字。

温馨提示:VS系统下默认三个返回值分别为:-1,0,1。


⚡模拟实现strcmp函数 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<assert.h>

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++; 
		str2++;
	}
	//if (*str1 > *str2)
		//return 1;
	//else
		//return -1;
	return *str1 - *str2;
}

int main()
{
	char arr1[] = "abzqw";
	char arr2[] = "abq";
	printf("%d\n", my_strcmp(arr1, arr2));
	return 0;
}

运行结果如下:


感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。

98b76a6f4a9c4ca88fd93da1188ac6f9.gif


http://www.kler.cn/a/1208.html

相关文章:

  • 5、设备管理
  • SDIO读写SD卡速度有多快?
  • 「解析」牛客网-华为机考企业真题 1-20
  • 基于OpenCV+CUDA实时视频抠绿、背景合成以及抠绿算法小结
  • Ae:混合模式
  • HttpRunner3.x(1)-框架介绍
  • 蓝桥冲刺31天之317
  • 卷积神经网络CNN识别MNIST数据集
  • Navicat轻松操控MySQL数据库:从基础到高级操作全解析!
  • 2023年全国最新道路运输从业人员精选真题及答案26
  • 基于 pytorch 的手写 transformer + tokenizer
  • 重新学习Vue,了解一下Vue的故事和核心特点
  • 深度学习11. CNN经典网络 LeNet-5实现CIFAR-10
  • STL总结
  • 【Python/Opencv】图像权重加法函数:cv2.addWeighted()详解
  • 节流还在用JS吗?CSS也可以实现哦
  • JAVA并发编程(2)——(如何保证原子性,原子类,CAS乐观锁,JUC常用类)
  • 176万,GPT-4发布了,如何查看OpenAI的下载量?
  • 面试官:聊聊你知道的跨域解决方案
  • Linux 路由表说明