strcmp函数详解:字符串【比较】的利器

目录

一,strcmp函数的简介

二,strcmp函数的原理

三,strcmp函数的用法

四,strcmp函数的注意事项

五,strcmp函数的模拟实现


一,strcmp函数的简介

strcmp函数是C语言中的字符串比较函数,用于比较两个字符串的大小。

函数头文件:

#include 

函数原型:

int strcmp ( const char * str1, const char * str2 );
  • 该函数接受两个参数,分别为要比较的两个字符串的指针。
  • 返回值为整形,表示两个字符串的大小关系。 

 函数返回值:

strcmp函数详解:字符串【比较】的利器_第1张图片

  1. 若str1小于str2,则返回负整数,即小于0的数。
  2. 若str1和str2相等,则返回0
  3. 若str1大于str2,则返回正整数,即大于0的数。

二,strcmp函数的原理

strcmp函数的比较规则是按照字典序进行比较,即逐个字符比较。具体的比较过程如下:

  1. 若两个字符相等,则继续比较下一个字符。
  2. 若两个字符不相等,则返回它们的ASCII码差值(ASCII码值大的字符串大)。

三,strcmp函数的用法

#include 
#include 

int main()
{
	char str1[] = "appple";
	char str2[] = "banana";

	int ret = strcmp(str1, str2);
	if (ret == 0)
		printf("str1和str2相等\n");
	else if (ret > 0)
		printf("str1大于str2\n");
	else
		printf("str1小于str2\n");
		
	return 0;
}

运行结果: 

strcmp函数详解:字符串【比较】的利器_第2张图片

四,strcmp函数的注意事项

1,字符串的比较是按照字典序进行的,因此大小写字母的比较结果不同。

#include 
#include 

int main()
{
	char str1[] = "hello";
	char str2[] = "HELLO";

	int ret = strcmp(str1, str2);
	if (ret == 0)
		printf("str1和str2相等\n");
	else if (ret > 0)
		printf("str1大于str2\n");
	else
		printf("str1小于str2\n");

	return 0;
}

 运行结果: 

2,在比较字符串时,需要确保字符串以'\0'结尾,否则可能会导致比较结果不正确。

#include 
#include 

int main()
{
	char str1[] = "hello";
	char str2[] = "hello";

	str1[5] = '!';
	int ret = strcmp(str1, str2);
	if (ret == 0)
		printf("str1和str2相等\n");
	else if (ret > 0)
		printf("str1大于str2\n");
	else
		printf("str1小于str2\n");

	return 0;
}

 运行结果: 

  

分析: 

在这段代码中,我们将str1字符串的结尾标识符'\0'改成了'!',运行代码后,输出结果为"str1大于str2"。这是因为str1字符串没有以'\0'结尾,所以strcmp函数会继续比较下去,直到遇到str2字符串的结尾标识符'\0'。由于str1字符串比str2字符串长,所以str1被认为是大于str2。

五,strcmp函数的模拟实现

#include 
#include 
#include 

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;//小于
}

int main()
{
	char str1[] = "appple";
	char str2[] = "banana";

	int ret = my_strcmp(str1, str2);
	if (ret == 0)
		printf("str1和str2相等\n");
	else if (ret > 0)
		printf("str1大于str2\n");
	else
		printf("str1小于str2\n");
		
	return 0;
}

你可能感兴趣的:(C语言从入门到精通,c语言,strcmp函数,strcmp函数模拟实现)