【C语言】strcmp函数讲解


strcmp函数:

这个函数定义在 <string.h> 头文件中,因此在使用 strcmp 函数之前,需要包含这个头文件。

strcmp 函数的原型如下:

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

参数说明:

str1 :指向第一个字符串的指针。

str2 :指向第二个字符串的指针。

返回值:

1.str1>str2:返回正数

2.str1<str2:返回负数

3.str1==str2:返回0

strcmp 函数通过比较两个字符串的字符来工作。它从两个字符串的第一个字符开始比较,如果相同则继续比较下一个字符,直到找到不同的字符或者到达字符串的结尾。比较是基于字符的字典顺序进行的,即使用 ASCII 值来比较字符。

需要注意的是, strcmp 函数只比较字符串的内容,不比较字符串的长度。如果两个字符串在某个位置上的字符不同,那么 strcmp 将根据这些字符的 ASCII 值来返回比较结果,而不会继续比较后续的字符。

接下来,我举几个例子来方便理解。


例1:str2前6个元素和str1一样,多了一个G。

int main() {
	char str1[] = "ancdef";
	char str2[] = "ancdefG";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到strcmp函数遇到str1第七个元素/0,说明str1结束了,而str2没结束,所以说明str1<str2,返回负数。


例2:第3个字母不同,str2元素也比str1多个G。

int main() {
	char str1[] = "ancdef";
	char str2[] = "anddefG";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素c比较ASCII后,dASCII大于cASCII,所以说明str1<str2,返回负数。

不会去比较后面的了。


例3:第3个字母不同,str2元素也比str1少个f。

int main() {
	char str1[] = "ancdef";
	char str2[] = "andde";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素c比较ASCII后,dASCII大于cASCII,所以说明str1<str2,返回负数。

不会去比较后面的了。


例4:第3个字母不同,str2元素也比str1少个f。

int main() {
	char str1[] = "anedef";
	char str2[] = "andde";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1>str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素e比较ASCII后,dASCII小于eASCII,所以说明str1>str2,返回正数。

不会去比较后面的了。


例5:第3个字母不同,str2元素也比str1多个G。

int main() {
	char str1[] = "anedef";
	char str2[] = "anddefG";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1>str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素e比较ASCII后,dASCII小于eASCII,所以说明str1>str2,返回正数。

不会去比较后面的了。


例6:str2元素和str1元素相同。

int main() {
	char str1[] = "ancdef";
	char str2[] = "ancdef";
	int ret = strcmp(str1, str2);
	printf("%d\n", ret);
	return 0;
}

打印:

在这里插入图片描述

直到strcmp函数遇到str1第七个元素/0str2第七个元素/0

说明str1str2都结束了,所以说明str1=str2,返回0。

结论:

所以说,strcmp函数不是简单比较两个数组元素数量的函数,而是按位比较数组元素,根据两数组对应元素出现的第一组变化来比较‘大小’进行输出的。

strcmp遇到\0就会停止。而不是说会比较两个\0
str2第七个元素/0

说明str1str2都结束了,所以说明str1=str2,返回0。


在这里插入图片描述
求三连~

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
strcmp函数是C语言中的字符串比较函数。它用于比较两个字符串的大小,并返回一个整数值作为比较结果。引用给出了一个使用strcmp函数的示例代码,其中使用strcmp函数比较了两个字符串s1和s2,并根据比较结果输出不同的信息。strcmp函数需要引用string.h头文件。引用是另一个使用strcmp函数的示例代码,用于验证用户输入的密码是否正确。在这个示例中,通过strcmp函数将用户输入的密码与正确的密码进行比较,如果相等则输出登录成功,否则输出密码错误。引用给出了strcmp函数函数原型,它接受两个const char类型的字符串作为参数,并返回一个整数值,如果两个字符串相等则返回0,如果第一个字符串小于第二个字符串则返回一个负数,如果第一个字符串大于第二个字符串则返回一个正数。通过对strcmp函数的理解和使用,可以实现字符串的比较操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [strcmp()函数](https://blog.csdn.net/WWJ970529/article/details/81778909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C语言中的字符串比较函数strcmp()](https://blog.csdn.net/xingyuncao520025/article/details/130698277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值