首页 > 编程笔记 > C语言笔记

C语言字符串比较的4种方法(附带示例)

C语言中比较字符串有多种方法,涉及到多个函数,这些函数都定义在 <string.h> 头文件中。让我们详细介绍这些函数,包括它们的原型、用法和特点。

1. strcmp() 函数

strcmp() 是最常用的字符串比较函数,它按从头到尾的顺序比较两个字符串,并返回一个整数值来表示比较结果。


函数原型:

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

参数说明:


返回值:

使用示例:

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

int main() {
    char str1[] = "hello";
    char str2[] = "world";
    
    int result = strcmp(str1, str2);
    
    if (result < 0) {
        printf("str1 小于 str2\n");
    } else if (result == 0) {
        printf("str1 等于 str2\n");
    } else {
        printf("str1 大于 str2\n");
    }
    
    return 0;
}

输出结果:

str1 小于 str2

2. strncmp() 函数

strncmp() 函数与 strcmp() 类似,但它允许我们指定要比较的最大字符数,这在只需要比较字符串的一部分或者防止缓冲区溢出时非常有用。


函数原型:

int strncmp(const char *str1, const char *str2, size_t n);

参数说明:

返回值与 strcmp() 相同。
 

使用示例:

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

int main() {
    char str1[] = "hello world";
    char str2[] = "hello there";
    
    int result = strncmp(str1, str2, 5);
    
    if (result == 0) {
        printf("前 5 个字符相同\n");
    } else {
        printf("前 5 个字符不同\n");
    }
    
    return 0;
}

输出结果:

前 5 个字符相同

3. strcasecmp() 函数

strcasecmp() 函数执行不区分大小写的字符串比较,这在需要忽略大小写进行比较时非常有用。需要注意的是,这个函数不是 C 标准库的一部分,而是 POSIX 标准的扩展,因此可能不是在所有系统上都可用。


函数原型:

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

参数和返回值的含义与 strcmp() 相同,只是比较时忽略大小写。


使用示例:

#include <stdio.h>
#include <strings.h>

int main() {
    char str1[] = "Hello";
    char str2[] = "hello";
    
    int result = strcasecmp(str1, str2);
    
    if (result == 0) {
        printf("str1 和 str2 在忽略大小写的情况下相等\n");
    } else {
        printf("str1 和 str2 在忽略大小写的情况下不相等\n");
    }
    
    return 0;
}

输出结果:

str1 和 str2 在忽略大小写的情况下相等

4. strncasecmp() 函数

strncasecmp() 函数结合了 strncmp() 和 strcasecmp() 的特点,它执行不区分大小写的字符串比较,同时允许指定要比较的最大字符数。这个函数也是 POSIX 标准的扩展。


函数原型:

int strncasecmp(const char *str1, const char *str2, size_t n);

参数说明:

返回值的含义与 strcmp() 相同,只是比较时忽略大小写并限制比较的字符数。


使用示例:

#include <stdio.h>
#include <strings.h>

int main() {
    char str1[] = "HELLO world";
    char str2[] = "hello THERE";
    
    int result = strncasecmp(str1, str2, 5);
    
    if (result == 0) {
        printf("前 5 个字符在忽略大小写的情况下相等\n");
    } else {
        printf("前 5 个字符在忽略大小写的情况下不相等\n");
    }
    
    return 0;
}

输出结果:

前 5 个字符在忽略大小写的情况下相等


这些函数为C语言中的字符串比较提供了灵活的选择。strcmp() 和 strncmp() 是标准 C 库函数,可以在所有 C 编译器中使用。而 strcasecmp() 和 strncasecmp() 虽然不是标准 C 库的一部分,但在许多 UNIX 和类 UNIX 系统上都可用,它们在需要忽略大小写进行比较时非常有用。


在选择使用哪种函数时,需要考虑具体的应用场景:

相关文章