(C语言)strcmp函数详解与模拟实现与strncmp详解

目录

1. strcmp函数详解

2. strcmp模拟实现

3. strncmp函数

3.1 特殊情况分析


1. strcmp函数详解

头文件<string.h>

返回值是int类型,函数是将str1与str2这两个数组进行比较,

若str1>str2返回大于0的值

若str1<str2返回小于0的值

若str1==str2返回0

在VS中大于时返回1,小于时返回-1,等于时返回0。实质是一样的。

演示

#include <stdio.h>
#include <string.h>

int main()
{
	char arr1[] = { "abcgdf" };
	char arr2[20] = { "abcafdfdfdfd" };
	int i = strcmp(arr1, arr2);
	printf("%d\n", i);
	return 0;
}

结果输出 1

我们来分析一下大于小于和等于是怎么评判的:

原理是一个一个字符向后进行比较,当比到不一样的字符时,看看谁的asscill码值大,以此来比较大小,后面的字符就不用比了。因此在上面的代码中比到g与a时就比出结果,g>a因此返回大于0的值返回了1.

我们来看看其他的特殊情况:

我们可以看到arr1与arr2是不同的但是在\0之前是相同的,strcmp比到\0就结束比较了,因此返回了0.

2. strcmp模拟实现

#include <assert.h>
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2 != NULL);

	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	//也可以这样写
	//return *str1 - *str2;
	if (*str1 > *str2)
		return 1;
	else
		return -1;
}

我们来使用一下

可见我们模拟实现成功。

3. strncmp函数

该函数与strcmp相比多了一个参数num

num表示要进行比较的字符个数。

演示:

比较了前三个字符abc相等因此返回0.

3.1 特殊情况分析

我们再来看一下特殊情况:

虽然要比较9个字符但是arr1与arr2在第四个字符处都出现了\0,因此提前结束了返回了0.

我们再来看一种情况:

arr1提前找到了\0,但是arr2还没有结束,我们规定的字符是9因此还会向后比较arr1中的\0与arr2中的a进行比较,显然arr1<arr2,因此返回-1.

感谢观看,欢迎在评论区讨论。

相关推荐

  1. strcmpstrncmp函数详解

    2024-03-13 22:20:05       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 22:20:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 22:20:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 22:20:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 22:20:05       20 阅读

热门阅读

  1. Python中,括号内部的for循环(列表推导式)

    2024-03-13 22:20:05       20 阅读
  2. 使用Ora2Pg迁移oracle数据到openGauss

    2024-03-13 22:20:05       18 阅读
  3. Qualcomm AI Hub-API介绍

    2024-03-13 22:20:05       23 阅读
  4. C++标准输入输出和名字空间

    2024-03-13 22:20:05       27 阅读
  5. C#接口和泛型

    2024-03-13 22:20:05       21 阅读
  6. python面向对象练习一

    2024-03-13 22:20:05       23 阅读
  7. 【SpringCloud微服务实战05】Feign 远程调用

    2024-03-13 22:20:05       24 阅读
  8. SpringBoot总结-配置管理和日志管理

    2024-03-13 22:20:05       24 阅读
  9. ChatGPT学术论文润色的方法与步骤教程

    2024-03-13 22:20:05       26 阅读
  10. 图片流……

    2024-03-13 22:20:05       23 阅读
  11. SystemVerilog Constants、Processes

    2024-03-13 22:20:05       24 阅读