📅  最后修改于: 2023-12-03 15:11:42.251000             🧑  作者: Mango
在 C 语言中,strcmp
函数用于比较两个字符串是否相等。但是 strcmp
函数是区分大小写的,这就意味着两个看似相同的字符串,但是大小写不同的情况下,strcmp
函数会认为这两个字符串不相等。
但是有很多场景下需要忽略字符串的大小写,比如用户的输入。此时我们需要一个忽略大小写的字符串比较函数,本文就来介绍一下如何编写自己的忽略大小写的 strcmp
函数。
忽略大小写的字符串比较函数的实现思路,可以分为以下几个步骤:
下面是一个简单的代码实现,该函数返回值与 strcmp
函数相同,即:
#include <ctype.h>
#include <stdio.h>
int strcasecmp(const char *s1, const char *s2) {
while (*s1 && *s2) {
if (tolower(*s1) != tolower(*s2)) {
return (tolower(*s1) < tolower(*s2)) ? -1 : 1;
}
++s1;
++s2;
}
return (*s1 == *s2) ? 0 : ((*s1 < *s2) ? -1 : 1);
}
这里使用了 tolower()
函数将字符转换为小写字母进行比较。如果两个字符相差大小写,则函数返回 -1 或 1,如果两个字符串完全相同,则返回 0。
使用该函数非常简单,只需要将需要比较的两个字符串作为参数传递给函数即可,如下所示:
#include <stdio.h>
int main() {
char str1[] = "Hello, World!";
char str2[] = "hElLo, wORld!";
int result = strcasecmp(str1, str2);
if (result == 0) {
printf("The strings are equal.\n");
} else if (result < 0) {
printf("String 1 is less than string 2.\n");
} else if (result > 0) {
printf("String 1 is greater than string 2.\n");
}
return 0;
}
编写一个忽略大小写的字符串比较函数,不仅能提高程序的用户体验,更能避免一些不必要的错误。本文简单介绍了一下该函数的实现思路和代码实现,希望对大家有所帮助。