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

C语言字符串比较(2种方法)

在C语言中,字符串比较是一项常见的操作。为了方便进行字符串比较,C标准库提供了两个强大的函数:strcmp 和 strncmp。这两个函数都定义在 string.h 头文件中,它们能够帮助我们轻松地比较两个字符串的内容。

strcmp 函数

strcmp 函数用于比较两个字符串,它的函数原型如下:

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

strcmp 函数接受两个参数,分别是要比较的两个字符串的指针。函数会逐个字符地比较这两个字符串,直到遇到不同的字符或者字符串结束符'\0'。比较的结果通过返回值来表示:


让我们看一个使用 strcmp 的例子:

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

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

    int result1 = strcmp(str1, str2);
    int result2 = strcmp(str1, str3);

    printf("比较 str1 和 str2:%d\n", result1);
    printf("比较 str1 和 str3:%d\n", result2);

    return 0;
}

这个程序的输出结果将会是:

比较 str1 和 str2:-15
比较 str1 和 str3:0

在这个例子中,str1 和 str2 的比较结果小于 0,因为 'h' 的 ASCII 值小于 'w'。而 str1 和 str3 的比较结果等于 0,因为它们的内容完全相同。

strncmp 函数

strncmp 函数是 strcmp 的一个变体,它允许我们指定要比较的最大字符数。strncmp 的函数原型如下:

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

strncmp 函数接受三个参数:前两个参数与 strcmp 相同,第三个参数 n 指定了要比较的最大字符数。函数会比较两个字符串的前 n 个字符,或者直到遇到字符串结束符'\0'。返回值的含义与 strcmp 相同。


下面是一个使用 strncmp 的例子:

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

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

    int result1 = strncmp(str1, str2, 5);
    int result2 = strncmp(str1, str2, 6);
    int result3 = strncmp(str1, str3, 5);

    printf("比较 str1 和 str2 的前 5 个字符:%d\n", result1);
    printf("比较 str1 和 str2 的前 6 个字符:%d\n", result2);
    printf("比较 str1 和 str3 的前 5 个字符:%d\n", result3);

    return 0;
}

这个程序的输出结果将会是:

比较 str1 和 str2 的前 5 个字符:0
比较 str1 和 str2 的前 6 个字符:-16
比较 str1 和 str3 的前 5 个字符:0

在这个例子中,我们可以看到 strncmp 只比较指定数量的字符。当比较 str1 和 str2 的前 5 个字符时,结果为 0,因为它们的前 5 个字符都是 "hello"。但是当比较前 6 个字符时,结果小于 0,因为第 6 个字符 ' '(空格)的 ASCII 值小于 't'。

strcmp 和 strncmp 的区别

strcmp 和 strncmp 的主要区别在于比较的范围:


strncmp 在某些情况下特别有用,例如:


然而,使用 strncmp 时需要注意,如果指定的比较长度超过了字符串的实际长度,可能会导致未定义行为。因此,在使用 strncmp 时,应该确保指定的长度不超过要比较的字符串的实际长度。

注意:对于英文字母,不管是 ctrcmp 还是 strncmp,在比较字符串时都是区分大小写的,如果你不希望区分大小写,请转到:C语言字符串比较(不区分大小写)

声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。