什么是strcmp?
在C语言中,strcmp是一个很常用的字符串函数,用于比较两个字符串是否相等。其函数原型为:
int strcmp(const char *str1, const char *str2);
其中str1和str2分别为要比较的两个字符串,strcmp函数会返回一个整数值,用于表示比较结果的大小。如果返回的值为0,则表示两个字符串相等;如果返回的值小于0,则表示str1小于str2;如果返回的值大于0,则表示str1大于str2。
下面我们来详细讲解一下strcmp函数。
strcmp函数的使用方法
比较两个字符串是否相等
下面是一个例子,用于比较两个字符串是否相等:
#include<string.h>
#include<stdio.h>
int main()
{
char str1[] = "hello";
char str2[] = "world";
if(strcmp(str1, str2) == 0)
{
printf("两个字符串相等\n");
}
else
{
printf("两个字符串不相等\n");
}
return 0;
}
上面的代码中,我们首先定义了两个字符串str1和str2。然后通过strcmp函数比较这两个字符串是否相等。由于这两个字符串不相等,因此最终输出的结果为“两个字符串不相等”。
比较两个字符串的大小
除了比较两个字符串是否相等之外,strcmp函数还可以用于比较两个字符串的大小。如果要比较两个字符串的大小,需要注意以下几点:
当两个字符串的首个字符相同时,比较下一个字符;
当两个字符串的首个字符不同时,则返回它们首个字符的ASCII码相减的结果。
下面是一个例子,用于比较两个字符串的大小:
#include<string.h>
#include<stdio.h>
int main()
{
char str1[] = "hello";
char str2[] = "world";
if(strcmp(str1, str2) < 0)
{
printf("str1小于str2\n");
}
else if(strcmp(str1, str2) == 0)
{
printf("str1等于str2\n");
}
else
{
printf("str1大于str2\n");
}
return 0;
}
由于str1的首个字符“h”的ASCII码值比str2的首个字符“w”的ASCII码值小,因此最终输出的结果为“str1小于str2”。
strcmp函数总结
通过上面的讲解,可以看出strcmp函数在C语言中是一个非常实用的字符串函数,它可以用于比较两个字符串是否相等、比较两个字符串的大小等等。
要注意的是,strcmp函数是区分大小写的,因此比较两个字符串时需要考虑大小写。另外,由于strcmp函数比较的是两个字符串的地址,因此在比较字符串是否相等时,要确保两个字符串的地址不相同。
最后我们再来看一个例子,用于说明在比较字符串大小时,如何考虑字符串的长度:
#include<string.h>
#include<stdio.h>
int main()
{
char str1[] = "hello";
char str2[] = "helloworld";
if(strcmp(str1, str2) < 0)
{
printf("str1小于str2\n");
}
else if(strcmp(str1, str2) == 0)
{
printf("str1等于str2\n");
}
else
{
printf("str1大于str2\n");
}
return 0;
}
由于str1的长度为5,而str2的长度为10,尽管str1的首个字符小于str2的首个字符,但是由于字符串长度的差异,最终输出的结果为“str1大于str2”。
因此,在使用strcmp函数比较字符串大小时,要注意字符串长度的影响。